add function fast_mpool_log_stats

pull/37/head
YuQing 2020-02-12 19:11:52 +08:00
parent d6b0f1b0c4
commit 5d3c3c576c
6 changed files with 39 additions and 11 deletions

1
.gitignore vendored
View File

@ -49,6 +49,7 @@ src/tests/test_split_string
src/tests/test_uniq_skiplist src/tests/test_uniq_skiplist
# other # other
*.swp
php-fastcommon/.deps php-fastcommon/.deps
php-fastcommon/.libs/ php-fastcommon/.libs/

View File

@ -1,5 +1,5 @@
Version 1.44 2020-02-09 Version 1.44 2020-02-12
* add test file src/tests/test_pthread_lock.c * add test file src/tests/test_pthread_lock.c
* add uniq_skiplist.[hc] * add uniq_skiplist.[hc]
* add function split_string_ex * add function split_string_ex
@ -7,6 +7,7 @@ Version 1.44 2020-02-09
* struct fast_task_info add field: nio_stage * struct fast_task_info add field: nio_stage
* add function fc_memrchr * add function fc_memrchr
* add function is_network_error * add function is_network_error
* add function fast_mpool_log_stats
Version 1.43 2019-12-25 Version 1.43 2019-12-25
* replace function call system to getExecResult, * replace function call system to getExecResult,

View File

@ -200,7 +200,8 @@ void fast_mpool_reset(struct fast_mpool_man *mpool)
} }
} }
void fast_mpool_stats(struct fast_mpool_man *mpool, struct fast_mpool_stats *stats) void fast_mpool_stats(struct fast_mpool_man *mpool,
struct fast_mpool_stats *stats)
{ {
struct fast_mpool_malloc *pMallocNode; struct fast_mpool_malloc *pMallocNode;
@ -213,7 +214,8 @@ void fast_mpool_stats(struct fast_mpool_man *mpool, struct fast_mpool_stats *sta
while (pMallocNode != NULL) while (pMallocNode != NULL)
{ {
stats->total_bytes += pMallocNode->alloc_size; stats->total_bytes += pMallocNode->alloc_size;
stats->free_bytes += (int)(pMallocNode->end_ptr - pMallocNode->free_ptr); stats->free_bytes += (int)(pMallocNode->end_ptr -
pMallocNode->free_ptr);
stats->total_trunk_count++; stats->total_trunk_count++;
pMallocNode = pMallocNode->malloc_next; pMallocNode = pMallocNode->malloc_next;
@ -227,3 +229,15 @@ void fast_mpool_stats(struct fast_mpool_man *mpool, struct fast_mpool_stats *sta
} }
} }
void fast_mpool_log_stats(struct fast_mpool_man *mpool)
{
struct fast_mpool_stats stats;
fast_mpool_stats(mpool, &stats);
logInfo("alloc_size_once: %d, discard_size: %d, "
"bytes: {total: %"PRId64", free: %"PRId64"}, "
"trunk_count: {total: %d, free: %d}",
mpool->alloc_size_once, mpool->discard_size,
stats.total_bytes, stats.free_bytes,
stats.total_trunk_count, stats.free_trunk_count);
}

View File

@ -130,8 +130,18 @@ get stats
parameters: parameters:
mpool: the mpool pointer mpool: the mpool pointer
stats: return the stats stats: return the stats
return none
*/ */
void fast_mpool_stats(struct fast_mpool_man *mpool, struct fast_mpool_stats *stats); void fast_mpool_stats(struct fast_mpool_man *mpool,
struct fast_mpool_stats *stats);
/**
log stats info
parameters:
mpool: the mpool pointer
return none
*/
void fast_mpool_log_stats(struct fast_mpool_man *mpool);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -21,7 +21,7 @@ static UniqSkiplist *sl = NULL;
static UniqSkiplistIterator iterator; static UniqSkiplistIterator iterator;
static int instance_count = 0; static int instance_count = 0;
static void free_test_func(void *ptr) static void free_test_func(void *ptr, const int delay_seconds)
{ {
instance_count--; instance_count--;
} }

View File

@ -48,6 +48,7 @@ int uniq_skiplist_init_ex(UniqSkiplistFactory *factory,
uniq_skiplist_free_func free_func, const int alloc_skiplist_once, uniq_skiplist_free_func free_func, const int alloc_skiplist_once,
const int min_alloc_elements_once, const int delay_free_seconds) const int min_alloc_elements_once, const int delay_free_seconds)
{ {
char name[64];
int bytes; int bytes;
int element_size; int element_size;
int i; int i;
@ -91,10 +92,11 @@ int uniq_skiplist_init_ex(UniqSkiplistFactory *factory,
} }
for (i=max_level_count-1; i>=0; i--) { for (i=max_level_count-1; i>=0; i--) {
sprintf(name, "sl-level%02d", i);
element_size = sizeof(UniqSkiplistNode) + element_size = sizeof(UniqSkiplistNode) +
sizeof(UniqSkiplistNode *) * (i + 1); sizeof(UniqSkiplistNode *) * (i + 1);
if ((result=fast_mblock_init_ex(factory->node_allocators + i, if ((result=fast_mblock_init_ex1(factory->node_allocators + i,
element_size, alloc_elements_once, NULL, NULL, false)) != 0) name, element_size, alloc_elements_once, NULL, NULL, false)) != 0)
{ {
return result; return result;
} }
@ -103,10 +105,10 @@ int uniq_skiplist_init_ex(UniqSkiplistFactory *factory,
} }
} }
if ((result=fast_mblock_init_ex(&factory->skiplist_allocator, if ((result=fast_mblock_init_ex1(&factory->skiplist_allocator,
sizeof(UniqSkiplist), alloc_skiplist_once > 0 ? "skiplist", sizeof(UniqSkiplist),
alloc_skiplist_once : 16 * 1024, alloc_skiplist_once > 0 ? alloc_skiplist_once :
NULL, NULL, false)) != 0) 16 * 1024, NULL, NULL, false)) != 0)
{ {
return result; return result;
} }