mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-08-25 00:23:33 +03:00
Arena: Make more derived stats non-atomic/locked.
This commit is contained in:
parent
d0c43217b5
commit
565045ef71
3 changed files with 36 additions and 54 deletions
47
src/ctl.c
47
src/ctl.c
|
|
@ -915,26 +915,21 @@ MUTEX_PROF_ARENA_MUTEXES
|
|||
sdstats->nflushes_small += astats->nflushes_small;
|
||||
|
||||
if (!destroyed) {
|
||||
ctl_accum_atomic_zu(&sdstats->astats.allocated_large,
|
||||
&astats->astats.allocated_large);
|
||||
sdstats->astats.allocated_large +=
|
||||
astats->astats.allocated_large;
|
||||
} else {
|
||||
assert(atomic_load_zu(&astats->astats.allocated_large,
|
||||
ATOMIC_RELAXED) == 0);
|
||||
assert(astats->astats.allocated_large == 0);
|
||||
}
|
||||
ctl_accum_locked_u64(&sdstats->astats.nmalloc_large,
|
||||
&astats->astats.nmalloc_large);
|
||||
ctl_accum_locked_u64(&sdstats->astats.ndalloc_large,
|
||||
&astats->astats.ndalloc_large);
|
||||
ctl_accum_locked_u64(&sdstats->astats.nrequests_large,
|
||||
&astats->astats.nrequests_large);
|
||||
ctl_accum_locked_u64(&sdstats->astats.nflushes_large,
|
||||
&astats->astats.nflushes_large);
|
||||
sdstats->astats.nmalloc_large += astats->astats.nmalloc_large;
|
||||
sdstats->astats.ndalloc_large += astats->astats.ndalloc_large;
|
||||
sdstats->astats.nrequests_large
|
||||
+= astats->astats.nrequests_large;
|
||||
sdstats->astats.nflushes_large += astats->astats.nflushes_large;
|
||||
ctl_accum_atomic_zu(
|
||||
&sdstats->astats.pa_shard_stats.abandoned_vm,
|
||||
&astats->astats.pa_shard_stats.abandoned_vm);
|
||||
|
||||
ctl_accum_atomic_zu(&sdstats->astats.tcache_bytes,
|
||||
&astats->astats.tcache_bytes);
|
||||
sdstats->astats.tcache_bytes += astats->astats.tcache_bytes;
|
||||
|
||||
if (ctl_arena->arena_ind == 0) {
|
||||
sdstats->astats.uptime = astats->astats.uptime;
|
||||
|
|
@ -1082,8 +1077,7 @@ ctl_refresh(tsdn_t *tsdn) {
|
|||
|
||||
if (config_stats) {
|
||||
ctl_stats->allocated = ctl_sarena->astats->allocated_small +
|
||||
atomic_load_zu(&ctl_sarena->astats->astats.allocated_large,
|
||||
ATOMIC_RELAXED);
|
||||
ctl_sarena->astats->astats.allocated_large;
|
||||
ctl_stats->active = (ctl_sarena->pactive << LG_PAGE);
|
||||
ctl_stats->metadata = ctl_sarena->astats->astats.base +
|
||||
atomic_load_zu(&ctl_sarena->astats->astats.internal,
|
||||
|
|
@ -2947,8 +2941,7 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_internal,
|
|||
CTL_RO_CGEN(config_stats, stats_arenas_i_metadata_thp,
|
||||
arenas_i(mib[2])->astats->astats.metadata_thp, size_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_tcache_bytes,
|
||||
atomic_load_zu(&arenas_i(mib[2])->astats->astats.tcache_bytes,
|
||||
ATOMIC_RELAXED), size_t)
|
||||
arenas_i(mib[2])->astats->astats.tcache_bytes, size_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_resident,
|
||||
arenas_i(mib[2])->astats->astats.resident,
|
||||
size_t)
|
||||
|
|
@ -2970,27 +2963,21 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_small_nfills,
|
|||
CTL_RO_CGEN(config_stats, stats_arenas_i_small_nflushes,
|
||||
arenas_i(mib[2])->astats->nflushes_small, uint64_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_large_allocated,
|
||||
atomic_load_zu(&arenas_i(mib[2])->astats->astats.allocated_large,
|
||||
ATOMIC_RELAXED), size_t)
|
||||
arenas_i(mib[2])->astats->astats.allocated_large, size_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_large_nmalloc,
|
||||
locked_read_u64_unsynchronized(
|
||||
&arenas_i(mib[2])->astats->astats.nmalloc_large), uint64_t)
|
||||
arenas_i(mib[2])->astats->astats.nmalloc_large, uint64_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_large_ndalloc,
|
||||
locked_read_u64_unsynchronized(
|
||||
&arenas_i(mib[2])->astats->astats.ndalloc_large), uint64_t)
|
||||
arenas_i(mib[2])->astats->astats.ndalloc_large, uint64_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_large_nrequests,
|
||||
locked_read_u64_unsynchronized(
|
||||
&arenas_i(mib[2])->astats->astats.nrequests_large), uint64_t)
|
||||
arenas_i(mib[2])->astats->astats.nrequests_large, uint64_t)
|
||||
/*
|
||||
* Note: "nmalloc_large" here instead of "nfills" in the read. This is
|
||||
* intentional (large has no batch fill).
|
||||
*/
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_large_nfills,
|
||||
locked_read_u64_unsynchronized(
|
||||
&arenas_i(mib[2])->astats->astats.nmalloc_large), uint64_t)
|
||||
arenas_i(mib[2])->astats->astats.nmalloc_large, uint64_t)
|
||||
CTL_RO_CGEN(config_stats, stats_arenas_i_large_nflushes,
|
||||
locked_read_u64_unsynchronized(
|
||||
&arenas_i(mib[2])->astats->astats.nflushes_large), uint64_t)
|
||||
arenas_i(mib[2])->astats->astats.nflushes_large, uint64_t)
|
||||
|
||||
/* Lock profiling related APIs below. */
|
||||
#define RO_MUTEX_CTL_GEN(n, l) \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue