From da9546194391e7d14ffe9b0c78f84892b012ff28 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 21 Apr 2009 04:08:01 +0400 Subject: [PATCH] * 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. --- src/controller.c | 2 ++ src/mem_pool.c | 3 +++ src/mem_pool.h | 1 + 3 files changed, 6 insertions(+) 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; /** -- 2.39.5