fast_mpool add stat fields: alloc_count, alloc_bytes and reset_count
parent
0b539bbba2
commit
7e5acf144b
|
|
@ -48,6 +48,10 @@ int fast_mpool_init(struct fast_mpool_man *mpool,
|
||||||
|
|
||||||
mpool->malloc_chain_head = NULL;
|
mpool->malloc_chain_head = NULL;
|
||||||
mpool->free_chain_head = NULL;
|
mpool->free_chain_head = NULL;
|
||||||
|
mpool->alloc_count = 0;
|
||||||
|
mpool->alloc_bytes = 0;
|
||||||
|
mpool->reset.count = 0;
|
||||||
|
mpool->reset.last_alloc_count = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -138,6 +142,8 @@ static inline void *fast_mpool_do_alloc(struct fast_mpool_man *mpool,
|
||||||
fast_mpool_remove_free_node(mpool, pMallocNode);
|
fast_mpool_remove_free_node(mpool, pMallocNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mpool->alloc_count++;
|
||||||
|
mpool->alloc_bytes += size;
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
@ -196,19 +202,26 @@ void *fast_mpool_memdup(struct fast_mpool_man *mpool,
|
||||||
|
|
||||||
void fast_mpool_reset(struct fast_mpool_man *mpool)
|
void fast_mpool_reset(struct fast_mpool_man *mpool)
|
||||||
{
|
{
|
||||||
struct fast_mpool_malloc *pMallocNode;
|
struct fast_mpool_malloc *pMallocNode;
|
||||||
|
|
||||||
mpool->free_chain_head = NULL;
|
mpool->reset.count++;
|
||||||
pMallocNode = mpool->malloc_chain_head;
|
if (mpool->reset.last_alloc_count == mpool->alloc_count)
|
||||||
while (pMallocNode != NULL)
|
{
|
||||||
{
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mpool->reset.last_alloc_count = mpool->alloc_count;
|
||||||
|
mpool->free_chain_head = NULL;
|
||||||
|
pMallocNode = mpool->malloc_chain_head;
|
||||||
|
while (pMallocNode != NULL)
|
||||||
|
{
|
||||||
pMallocNode->free_ptr = pMallocNode->base_ptr;
|
pMallocNode->free_ptr = pMallocNode->base_ptr;
|
||||||
|
|
||||||
pMallocNode->free_next = mpool->free_chain_head;
|
pMallocNode->free_next = mpool->free_chain_head;
|
||||||
mpool->free_chain_head = pMallocNode;
|
mpool->free_chain_head = pMallocNode;
|
||||||
|
|
||||||
pMallocNode = pMallocNode->malloc_next;
|
pMallocNode = pMallocNode->malloc_next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void fast_mpool_stats(struct fast_mpool_man *mpool,
|
void fast_mpool_stats(struct fast_mpool_man *mpool,
|
||||||
|
|
@ -243,12 +256,22 @@ void fast_mpool_stats(struct fast_mpool_man *mpool,
|
||||||
void fast_mpool_log_stats(struct fast_mpool_man *mpool)
|
void fast_mpool_log_stats(struct fast_mpool_man *mpool)
|
||||||
{
|
{
|
||||||
struct fast_mpool_stats stats;
|
struct fast_mpool_stats stats;
|
||||||
|
char sz_total_bytes[32];
|
||||||
|
char sz_free_bytes[32];
|
||||||
|
char sz_alloc_bytes[32];
|
||||||
|
|
||||||
fast_mpool_stats(mpool, &stats);
|
fast_mpool_stats(mpool, &stats);
|
||||||
|
|
||||||
|
long_to_comma_str(stats.total_bytes, sz_total_bytes);
|
||||||
|
long_to_comma_str(stats.free_bytes, sz_free_bytes);
|
||||||
|
long_to_comma_str(mpool->alloc_bytes, sz_alloc_bytes);
|
||||||
logInfo("alloc_size_once: %d, discard_size: %d, "
|
logInfo("alloc_size_once: %d, discard_size: %d, "
|
||||||
"bytes: {total: %"PRId64", free: %"PRId64"}, "
|
"bytes: {total: %s, free: %s}, "
|
||||||
"trunk_count: {total: %d, free: %d}",
|
"trunk_count: {total: %d, free: %d}, "
|
||||||
mpool->alloc_size_once, mpool->discard_size,
|
"alloc_count: %"PRId64", alloc_bytes: %s, "
|
||||||
stats.total_bytes, stats.free_bytes,
|
"reset_count: %"PRId64, mpool->alloc_size_once,
|
||||||
stats.total_trunk_count, stats.free_trunk_count);
|
mpool->discard_size, sz_total_bytes,
|
||||||
|
sz_free_bytes, stats.total_trunk_count,
|
||||||
|
stats.free_trunk_count, mpool->alloc_count,
|
||||||
|
sz_alloc_bytes, mpool->reset.count);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,16 @@ struct fast_mpool_malloc
|
||||||
|
|
||||||
struct fast_mpool_man
|
struct fast_mpool_man
|
||||||
{
|
{
|
||||||
struct fast_mpool_malloc *malloc_chain_head; //malloc chain to be freed
|
struct fast_mpool_malloc *malloc_chain_head; //malloc chain to be freed
|
||||||
struct fast_mpool_malloc *free_chain_head; //free node chain
|
struct fast_mpool_malloc *free_chain_head; //free node chain
|
||||||
int alloc_size_once; //alloc size once, default: 1MB
|
int alloc_size_once; //alloc size once, default: 1MB
|
||||||
int discard_size; //discard size, default: 64 bytes
|
int discard_size; //discard size, default: 64 bytes
|
||||||
|
int64_t alloc_count;
|
||||||
|
int64_t alloc_bytes;
|
||||||
|
struct {
|
||||||
|
int64_t count;
|
||||||
|
int64_t last_alloc_count;
|
||||||
|
} reset;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct fast_mpool_stats
|
struct fast_mpool_stats
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue