]> source.dussan.org Git - rspamd.git/commitdiff
* Add counter for oversized chunks: this parameter can improve performance, for example
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 21 Apr 2009 00:08:01 +0000 (04:08 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 21 Apr 2009 00:08:01 +0000 (04:08 +0400)
  if we have too many oversized chunks it is good decision to increase
  chunk size.

src/controller.c
src/mem_pool.c
src/mem_pool.h

index a2c373d25c71f89cc9459e83742e0fa984a45199..b9223ff50abc01cae4cb2a3ef192c98fbaba930d 100644 (file)
@@ -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;
index 956a624228f46511c2a329da2c55f653fb8eb9fd..66d9ace19a7936645eb423aacac8208d391731ba 100644 (file)
@@ -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
index 0754afd7ba6f8854e50b7020fc99b721c65f3fe6..6875a1850fb15a6b68c81e29604e421568ceefa9 100644 (file)
@@ -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;
 
 /**