Loading logd/LogBuffer.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading logd/LogBuffer.h +1 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public: private: static constexpr size_t minPrune = 4; static constexpr size_t maxPrune = 256; void maybePrune(log_id_t id); Loading logd/LogStatistics.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading @@ -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); Loading logd/LogStatistics.h +9 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -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]; } Loading Loading
logd/LogBuffer.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading
logd/LogBuffer.h +1 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public: private: static constexpr size_t minPrune = 4; static constexpr size_t maxPrune = 256; void maybePrune(log_id_t id); Loading
logd/LogStatistics.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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; Loading @@ -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); Loading
logd/LogStatistics.h +9 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -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]; } Loading