mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-23 21:23:06 +00:00
Bin batching: add some stats.
This lets us easily see what fraction of flush load is being taken up by the bins, and helps guide future optimization approaches (for example: should we prefetch during cache bin fills? It depends on how many objects the average fill pops out of the batch).
This commit is contained in:
committed by
David Goldblatt
parent
fc615739cb
commit
f9c0b5f7f8
30
src/ctl.c
30
src/ctl.c
@@ -239,6 +239,10 @@ CTL_PROTO(stats_arenas_i_bins_j_nslabs)
|
||||
CTL_PROTO(stats_arenas_i_bins_j_nreslabs)
|
||||
CTL_PROTO(stats_arenas_i_bins_j_curslabs)
|
||||
CTL_PROTO(stats_arenas_i_bins_j_nonfull_slabs)
|
||||
CTL_PROTO(stats_arenas_i_bins_j_batch_pops)
|
||||
CTL_PROTO(stats_arenas_i_bins_j_batch_failed_pushes)
|
||||
CTL_PROTO(stats_arenas_i_bins_j_batch_pushes)
|
||||
CTL_PROTO(stats_arenas_i_bins_j_batch_pushed_elems)
|
||||
INDEX_PROTO(stats_arenas_i_bins_j)
|
||||
CTL_PROTO(stats_arenas_i_lextents_j_nmalloc)
|
||||
CTL_PROTO(stats_arenas_i_lextents_j_ndalloc)
|
||||
@@ -694,6 +698,14 @@ static const ctl_named_node_t stats_arenas_i_bins_j_node[] = {
|
||||
{NAME("nreslabs"), CTL(stats_arenas_i_bins_j_nreslabs)},
|
||||
{NAME("curslabs"), CTL(stats_arenas_i_bins_j_curslabs)},
|
||||
{NAME("nonfull_slabs"), CTL(stats_arenas_i_bins_j_nonfull_slabs)},
|
||||
{NAME("batch_pops"),
|
||||
CTL(stats_arenas_i_bins_j_batch_pops)},
|
||||
{NAME("batch_failed_pushes"),
|
||||
CTL(stats_arenas_i_bins_j_batch_failed_pushes)},
|
||||
{NAME("batch_pushes"),
|
||||
CTL(stats_arenas_i_bins_j_batch_pushes)},
|
||||
{NAME("batch_pushed_elems"),
|
||||
CTL(stats_arenas_i_bins_j_batch_pushed_elems)},
|
||||
{NAME("mutex"), CHILD(named, stats_arenas_i_bins_j_mutex)}
|
||||
};
|
||||
|
||||
@@ -1246,6 +1258,16 @@ MUTEX_PROF_ARENA_MUTEXES
|
||||
assert(bstats->curslabs == 0);
|
||||
assert(bstats->nonfull_slabs == 0);
|
||||
}
|
||||
|
||||
merged->batch_pops
|
||||
+= bstats->batch_pops;
|
||||
merged->batch_failed_pushes
|
||||
+= bstats->batch_failed_pushes;
|
||||
merged->batch_pushes
|
||||
+= bstats->batch_pushes;
|
||||
merged->batch_pushed_elems
|
||||
+= bstats->batch_pushed_elems;
|
||||
|
||||
malloc_mutex_prof_merge(&sdstats->bstats[i].mutex_data,
|
||||
&astats->bstats[i].mutex_data);
|
||||
}
|
||||
@@ -3957,6 +3979,14 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_bins_j_curslabs,
|
||||
arenas_i(mib[2])->astats->bstats[mib[4]].stats_data.curslabs, size_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_bins_j_nonfull_slabs,
|
||||
arenas_i(mib[2])->astats->bstats[mib[4]].stats_data.nonfull_slabs, size_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_bins_j_batch_pops,
|
||||
arenas_i(mib[2])->astats->bstats[mib[4]].stats_data.batch_pops, uint64_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_bins_j_batch_failed_pushes,
|
||||
arenas_i(mib[2])->astats->bstats[mib[4]].stats_data.batch_failed_pushes, uint64_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_bins_j_batch_pushes,
|
||||
arenas_i(mib[2])->astats->bstats[mib[4]].stats_data.batch_pushes, uint64_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_bins_j_batch_pushed_elems,
|
||||
arenas_i(mib[2])->astats->bstats[mib[4]].stats_data.batch_pushed_elems, uint64_t)
|
||||
|
||||
static const ctl_named_node_t *
|
||||
stats_arenas_i_bins_j_index(tsdn_t *tsdn, const size_t *mib,
|
||||
|
||||
Reference in New Issue
Block a user