diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-04-21 04:08:01 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-04-21 04:08:01 +0400 |
commit | da9546194391e7d14ffe9b0c78f84892b012ff28 (patch) | |
tree | 573d8247533354e338ca4783dc4bdf28b078e531 | |
parent | d0dbd1aa3a95c5a1f354458033f6af2b8f01a4a5 (diff) | |
download | rspamd-da9546194391e7d14ffe9b0c78f84892b012ff28.tar.gz rspamd-da9546194391e7d14ffe9b0c78f84892b012ff28.zip |
* Add counter for oversized chunks: this parameter can improve performance, for example
if we have too many oversized chunks it is good decision to increase
chunk size.
-rw-r--r-- | src/controller.c | 2 | ||||
-rw-r--r-- | src/mem_pool.c | 3 | ||||
-rw-r--r-- | src/mem_pool.h | 1 |
3 files changed, 6 insertions, 0 deletions
diff --git a/src/controller.c b/src/controller.c index a2c373d25..b9223ff50 100644 --- a/src/controller.c +++ b/src/controller.c @@ -206,6 +206,8 @@ process_command (struct controller_command *cmd, char **cmd_args, struct control (long int)mem_st.shared_chunks_allocated); r += snprintf (out_buf + r, sizeof (out_buf) - r, "Chunks freed: %ld" CRLF, (long int)mem_st.chunks_freed); + r += snprintf (out_buf + r, sizeof (out_buf) - r, "Oversized chunks: %ld" CRLF, + (long int)mem_st.oversized_chunks); rspamd_dispatcher_write (session->dispatcher, out_buf, r, FALSE); } break; diff --git a/src/mem_pool.c b/src/mem_pool.c index 956a62422..66d9ace19 100644 --- a/src/mem_pool.c +++ b/src/mem_pool.c @@ -168,6 +168,7 @@ memory_pool_alloc (memory_pool_t *pool, memory_pool_ssize_t size) new = pool_chain_new (cur->len); } else { + mem_pool_stat->oversized_chunks ++; new = pool_chain_new (size + cur->len); } /* Attach new pool to chain */ @@ -239,6 +240,7 @@ memory_pool_alloc_shared (memory_pool_t *pool, memory_pool_ssize_t size) new = pool_chain_new_shared (cur->len); } else { + mem_pool_stat->oversized_chunks ++; new = pool_chain_new_shared (size + cur->len); } /* Attach new pool to chain */ @@ -402,6 +404,7 @@ memory_pool_stat (memory_pool_stat_t *st) st->chunks_allocated = mem_pool_stat->chunks_allocated; st->shared_chunks_allocated = mem_pool_stat->shared_chunks_allocated; st->chunks_freed = mem_pool_stat->chunks_freed; + st->oversized_chunks = mem_pool_stat->oversized_chunks; } #define FIXED_POOL_SIZE 4095 diff --git a/src/mem_pool.h b/src/mem_pool.h index 0754afd7b..6875a1850 100644 --- a/src/mem_pool.h +++ b/src/mem_pool.h @@ -74,6 +74,7 @@ typedef struct memory_pool_stat_s { memory_pool_ssize_t chunks_allocated; /**< number of chunks that are allocated */ memory_pool_ssize_t shared_chunks_allocated; /**< shared chunks allocated */ memory_pool_ssize_t chunks_freed; /**< chunks freed */ + memory_pool_ssize_t oversized_chunks; /**< oversized chunks */ } memory_pool_stat_t; /** |