diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/or/buffers.c | 19 | ||||
-rw-r--r-- | src/or/main.c | 1 | ||||
-rw-r--r-- | src/or/or.h | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/or/buffers.c b/src/or/buffers.c index 99271de7f9..1087a7a6fa 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -196,6 +196,25 @@ get_free_mem_list(size_t sz) } } +/** Write the sizes of the buffer freelists at log level <b>severity</b> */ +void +buf_dump_freelist_sizes(int severity) +{ + size_t sz; + log(severity, LD_MM, "======= Buffer freelists."); + for (sz = 4096; sz <= 16384; sz *= 2) { + uint64_t total_size; + free_mem_list_t *lst; + if (!IS_FREELIST_SIZE(sz)) + continue; + lst = get_free_mem_list(sz); + total_size = ((uint64_t)sz)*lst->len; + log(severity, LD_MM, + U64_FORMAT" bytes in %d %d-byte buffers. (low-water: %d)", + U64_PRINTF_ARG(total_size), lst->len, (int)sz, lst->lowwater); + } +} + /** Throw the memory from <b>buf</b> onto the appropriate freelist. * Return true if we added the memory, 0 if the freelist was full. */ static int diff --git a/src/or/main.c b/src/or/main.c index e252383074..8bedd71b86 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -1542,6 +1542,7 @@ dumpmemusage(int severity) U64_PRINTF_ARG(rephist_total_alloc), rephist_total_num); dump_routerlist_mem_usage(severity); dump_cell_pool_usage(severity); + buf_dump_freelist_sizes(severity); } /** Write all statistics to the log, with log level 'severity'. Called diff --git a/src/or/or.h b/src/or/or.h index b4dffb2c81..d2f103ec74 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2170,6 +2170,7 @@ void buf_free(buf_t *buf); void buf_clear(buf_t *buf); void buf_shrink(buf_t *buf); void buf_shrink_freelists(int free_all); +void buf_dump_freelist_sizes(int severity); size_t buf_datalen(const buf_t *buf); size_t buf_capacity(const buf_t *buf); |