Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cee44732 authored by Mark Salyzyn's avatar Mark Salyzyn Committed by Gerrit Code Review
Browse files

Merge "logd: correct for number of elements in prune"

parents 4f11a401 58b8be89
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -225,8 +225,11 @@ void LogBuffer::maybePrune(log_id_t id) {
    unsigned long maxSize = log_buffer_size(id);
    if (sizes > maxSize) {
        size_t sizeOver = sizes - ((maxSize * 9) / 10);
        size_t elements = stats.elements(id);
        size_t minElements = elements / 10;
        size_t elements = stats.realElements(id);
        size_t minElements = elements / 100;
        if (minElements < minPrune) {
            minElements = minPrune;
        }
        unsigned long pruneRows = elements * sizeOver / sizes;
        if (pruneRows < minElements) {
            pruneRows = minElements;
+1 −0
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ public:

private:

    static constexpr size_t minPrune = 4;
    static constexpr size_t maxPrune = 256;

    void maybePrune(log_id_t id);
+5 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ LogStatistics::LogStatistics() : enable(false) {
    log_id_for_each(id) {
        mSizes[id] = 0;
        mElements[id] = 0;
        mDroppedElements[id] = 0;
        mSizesTotal[id] = 0;
        mElementsTotal[id] = 0;
    }
@@ -93,6 +94,9 @@ void LogStatistics::subtract(LogBufferElement *element) {
    unsigned short size = element->getMsgLen();
    mSizes[log_id] -= size;
    --mElements[log_id];
    if (element->getDropped()) {
        --mDroppedElements[log_id];
    }

    if (log_id == LOG_ID_KERNEL) {
        return;
@@ -119,6 +123,7 @@ void LogStatistics::drop(LogBufferElement *element) {
    log_id_t log_id = element->getLogId();
    unsigned short size = element->getMsgLen();
    mSizes[log_id] -= size;
    ++mDroppedElements[log_id];

    uidTable[log_id].drop(element->getUid(), element);

+9 −1
Original line number Diff line number Diff line
@@ -374,6 +374,7 @@ struct TagEntry : public EntryBase {
class LogStatistics {
    size_t mSizes[LOG_ID_MAX];
    size_t mElements[LOG_ID_MAX];
    size_t mDroppedElements[LOG_ID_MAX];
    size_t mSizesTotal[LOG_ID_MAX];
    size_t mElementsTotal[LOG_ID_MAX];
    bool enable;
@@ -404,7 +405,11 @@ public:
    // entry->setDropped(1) must follow this call
    void drop(LogBufferElement *entry);
    // Correct for coalescing two entries referencing dropped content
    void erase(LogBufferElement *e) { --mElements[e->getLogId()]; }
    void erase(LogBufferElement *element) {
        log_id_t log_id = element->getLogId();
        --mElements[log_id];
        --mDroppedElements[log_id];
    }

    std::unique_ptr<const UidEntry *[]> sort(size_t len, log_id id) {
        return uidTable[id].sort(len);
@@ -413,6 +418,9 @@ public:
    // fast track current value by id only
    size_t sizes(log_id_t id) const { return mSizes[id]; }
    size_t elements(log_id_t id) const { return mElements[id]; }
    size_t realElements(log_id_t id) const {
        return mElements[id] - mDroppedElements[id];
    }
    size_t sizesTotal(log_id_t id) const { return mSizesTotal[id]; }
    size_t elementsTotal(log_id_t id) const { return mElementsTotal[id]; }