aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-26 18:29:45 +0300
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-26 18:29:45 +0300
commit251d13cc56cdf625bafac9db008d85abe0fa893c (patch)
tree5b77b7055bf9e7da9a09d762e84cfaabed58131f
parentbd1213bba483c40213c7b24c7ded1cbf0c8cd5b1 (diff)
downloadrspamd-251d13cc56cdf625bafac9db008d85abe0fa893c.tar.gz
rspamd-251d13cc56cdf625bafac9db008d85abe0fa893c.zip
* Add statictics for all allocated pools
-rw-r--r--src/controller.c4
-rw-r--r--src/mem_pool.c6
-rw-r--r--src/mem_pool.h6
3 files changed, 14 insertions, 2 deletions
diff --git a/src/controller.c b/src/controller.c
index 8a56b7f5b..d82cc726e 100644
--- a/src/controller.c
+++ b/src/controller.c
@@ -194,6 +194,10 @@ process_command (struct controller_command *cmd, char **cmd_args, struct control
session->worker->srv->stat->connections_count);
r += snprintf (out_buf + r, sizeof (out_buf) - r, "Control connections count: %u" CRLF,
session->worker->srv->stat->control_connections_count);
+ r += snprintf (out_buf + r, sizeof (out_buf) - r, "Pools allocated: %ld" CRLF,
+ (long int)mem_st.pools_allocated);
+ r += snprintf (out_buf + r, sizeof (out_buf) - r, "Pools freed: %ld" CRLF,
+ (long int)mem_st.pools_freed);
r += snprintf (out_buf + r, sizeof (out_buf) - r, "Bytes allocated: %ld" CRLF,
(long int)mem_st.bytes_allocated);
r += snprintf (out_buf + r, sizeof (out_buf) - r, "Memory chunks allocated: %ld" CRLF,
diff --git a/src/mem_pool.c b/src/mem_pool.c
index 84ebe9a79..ab96483f0 100644
--- a/src/mem_pool.c
+++ b/src/mem_pool.c
@@ -142,6 +142,8 @@ memory_pool_new (memory_pool_ssize_t size)
new->first_pool = new->cur_pool;
new->destructors = NULL;
+ mem_pool_stat->pools_allocated ++;
+
return new;
}
@@ -387,12 +389,16 @@ memory_pool_delete (memory_pool_t *pool)
STAT_UNLOCK ();
}
+ mem_pool_stat->pools_freed ++;
g_free (pool);
}
void
memory_pool_stat (memory_pool_stat_t *st)
{
+ st->pools_allocated = mem_pool_stat->pools_allocated;
+ st->pools_freed = mem_pool_stat->pools_freed;
+ st->shared_chunks_allocated = mem_pool_stat->shared_chunks_allocated;
st->bytes_allocated = mem_pool_stat->bytes_allocated;
st->chunks_allocated = mem_pool_stat->chunks_allocated;
st->shared_chunks_allocated = mem_pool_stat->shared_chunks_allocated;
diff --git a/src/mem_pool.h b/src/mem_pool.h
index d332a2c11..0754afd7b 100644
--- a/src/mem_pool.h
+++ b/src/mem_pool.h
@@ -68,9 +68,11 @@ typedef struct memory_pool_s {
* Statistics structure
*/
typedef struct memory_pool_stat_s {
- memory_pool_ssize_t bytes_allocated; /**< bytes that are allocated with pool allocator */
+ memory_pool_ssize_t pools_allocated; /**< total number of allocated pools */
+ memory_pool_ssize_t pools_freed; /**< number of freed pools */
+ memory_pool_ssize_t bytes_allocated; /**< bytes that are allocated with pool allocator */
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 shared_chunks_allocated; /**< shared chunks allocated */
memory_pool_ssize_t chunks_freed; /**< chunks freed */
} memory_pool_stat_t;