From: Vsevolod Stakhov Date: Thu, 12 Dec 2019 19:50:20 +0000 (+0000) Subject: [Minor] Track memory usage in mempool X-Git-Tag: 2.3~219 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3617535f341e5ea4df04b94e10f78c1f9ee5e814;p=thirdparty%2Frspamd.git [Minor] Track memory usage in mempool --- diff --git a/src/libutil/mem_pool.c b/src/libutil/mem_pool.c index c01ce0c2cc..ed3a6b73d8 100644 --- a/src/libutil/mem_pool.c +++ b/src/libutil/mem_pool.c @@ -393,6 +393,8 @@ memory_pool_alloc_common (rspamd_mempool_t * pool, gsize size, if (pool) { POOL_MTX_LOCK (); + pool->used_memory += size; + if (always_malloc && pool_type != RSPAMD_MEMPOOL_SHARED) { void *ptr; @@ -416,6 +418,10 @@ memory_pool_alloc_common (rspamd_mempool_t * pool, gsize size, } if (cur == NULL || free < size) { + if (free < size) { + pool->wasted_memory += free; + } + /* Allocate new chain element */ if (pool->elt_len >= size + MIN_MEM_ALIGNMENT) { pool->entry->elts[pool->entry->cur_elts].fragmentation += size; diff --git a/src/libutil/mem_pool.h b/src/libutil/mem_pool.h index 5a663e35fa..a32aa05976 100644 --- a/src/libutil/mem_pool.h +++ b/src/libutil/mem_pool.h @@ -127,6 +127,8 @@ typedef struct memory_pool_s { GPtrArray *trash_stack; GHashTable *variables; /**< private memory pool variables */ gsize elt_len; /**< size of an element */ + gsize used_memory; + gsize wasted_memory; struct rspamd_mempool_entry_point *entry; struct rspamd_mempool_tag tag; /**< memory pool tag */ } rspamd_mempool_t;