diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-12-12 19:50:20 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-12-12 19:50:20 +0000 |
commit | 3617535f341e5ea4df04b94e10f78c1f9ee5e814 (patch) | |
tree | 0aa335361422b1ee63e74dea325ca1279e960bbd /src/libutil | |
parent | eba3b1535d33c93949d0d53234ffb373772de1a5 (diff) | |
download | rspamd-3617535f341e5ea4df04b94e10f78c1f9ee5e814.tar.gz rspamd-3617535f341e5ea4df04b94e10f78c1f9ee5e814.zip |
[Minor] Track memory usage in mempool
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/mem_pool.c | 6 | ||||
-rw-r--r-- | src/libutil/mem_pool.h | 2 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/libutil/mem_pool.c b/src/libutil/mem_pool.c index c01ce0c2c..ed3a6b73d 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 5a663e35f..a32aa0597 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; |