PA: Move in decay stats.

This commit is contained in:
David Goldblatt
2020-03-09 10:40:37 -07:00
committed by David Goldblatt
parent 356aaa7dc6
commit 1ad368c8b7
6 changed files with 72 additions and 50 deletions

View File

@@ -105,25 +105,33 @@ arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads,
atomic_load_zu(&arena->pa_shard.edata_cache.count, ATOMIC_RELAXED),
ATOMIC_RELAXED);
locked_inc_u64_unsynchronized(&astats->decay_dirty.npurge,
/* Dirty pa_shard_decay_stats_t */
locked_inc_u64_unsynchronized(
&astats->pa_shard_stats.decay_dirty.npurge,
locked_read_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
&arena->stats.decay_dirty.npurge));
locked_inc_u64_unsynchronized(&astats->decay_dirty.nmadvise,
&arena->pa_shard.stats->decay_dirty.npurge));
locked_inc_u64_unsynchronized(
&astats->pa_shard_stats.decay_dirty.nmadvise,
locked_read_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
&arena->stats.decay_dirty.nmadvise));
locked_inc_u64_unsynchronized(&astats->decay_dirty.purged,
&arena->pa_shard.stats->decay_dirty.nmadvise));
locked_inc_u64_unsynchronized(
&astats->pa_shard_stats.decay_dirty.purged,
locked_read_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
&arena->stats.decay_dirty.purged));
&arena->pa_shard.stats->decay_dirty.purged));
locked_inc_u64_unsynchronized(&astats->decay_muzzy.npurge,
/* Muzzy pa_shard_decay_stats_t */
locked_inc_u64_unsynchronized(
&astats->pa_shard_stats.decay_muzzy.npurge,
locked_read_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
&arena->stats.decay_muzzy.npurge));
locked_inc_u64_unsynchronized(&astats->decay_muzzy.nmadvise,
&arena->pa_shard.stats->decay_muzzy.npurge));
locked_inc_u64_unsynchronized(
&astats->pa_shard_stats.decay_muzzy.nmadvise,
locked_read_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
&arena->stats.decay_muzzy.nmadvise));
locked_inc_u64_unsynchronized(&astats->decay_muzzy.purged,
&arena->pa_shard.stats->decay_muzzy.nmadvise));
locked_inc_u64_unsynchronized(
&astats->pa_shard_stats.decay_muzzy.purged,
locked_read_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
&arena->stats.decay_muzzy.purged));
&arena->pa_shard.stats->decay_muzzy.purged));
atomic_load_add_store_zu(&astats->base, base_allocated);
atomic_load_add_store_zu(&astats->internal, arena_internal_get(arena));
@@ -695,7 +703,7 @@ arena_decay_reinit(arena_decay_t *decay, ssize_t decay_ms) {
static bool
arena_decay_init(arena_decay_t *decay, ssize_t decay_ms,
arena_stats_decay_t *stats) {
pa_shard_decay_stats_t *stats) {
if (config_debug) {
for (size_t i = 0; i < sizeof(arena_decay_t); i++) {
assert(((char *)decay)[i] == 0);
@@ -708,7 +716,6 @@ arena_decay_init(arena_decay_t *decay, ssize_t decay_ms,
}
decay->purging = false;
arena_decay_reinit(decay, decay_ms);
/* Memory is zeroed, so there is no need to clear stats. */
if (config_stats) {
decay->stats = stats;
}
@@ -2044,11 +2051,13 @@ arena_new(tsdn_t *tsdn, unsigned ind, extent_hooks_t *extent_hooks) {
}
if (arena_decay_init(&arena->decay_dirty,
arena_dirty_decay_ms_default_get(), &arena->stats.decay_dirty)) {
arena_dirty_decay_ms_default_get(),
&arena->pa_shard.stats->decay_dirty)) {
goto label_error;
}
if (arena_decay_init(&arena->decay_muzzy,
arena_muzzy_decay_ms_default_get(), &arena->stats.decay_muzzy)) {
arena_muzzy_decay_ms_default_get(),
&arena->pa_shard.stats->decay_muzzy)) {
goto label_error;
}

View File

@@ -869,19 +869,25 @@ ctl_arena_stats_sdmerge(ctl_arena_t *ctl_sdarena, ctl_arena_t *ctl_arena,
&astats->astats.edata_avail);
}
ctl_accum_locked_u64(&sdstats->astats.decay_dirty.npurge,
&astats->astats.decay_dirty.npurge);
ctl_accum_locked_u64(&sdstats->astats.decay_dirty.nmadvise,
&astats->astats.decay_dirty.nmadvise);
ctl_accum_locked_u64(&sdstats->astats.decay_dirty.purged,
&astats->astats.decay_dirty.purged);
ctl_accum_locked_u64(
&sdstats->astats.pa_shard_stats.decay_dirty.npurge,
&astats->astats.pa_shard_stats.decay_dirty.npurge);
ctl_accum_locked_u64(
&sdstats->astats.pa_shard_stats.decay_dirty.nmadvise,
&astats->astats.pa_shard_stats.decay_dirty.nmadvise);
ctl_accum_locked_u64(
&sdstats->astats.pa_shard_stats.decay_dirty.purged,
&astats->astats.pa_shard_stats.decay_dirty.purged);
ctl_accum_locked_u64(&sdstats->astats.decay_muzzy.npurge,
&astats->astats.decay_muzzy.npurge);
ctl_accum_locked_u64(&sdstats->astats.decay_muzzy.nmadvise,
&astats->astats.decay_muzzy.nmadvise);
ctl_accum_locked_u64(&sdstats->astats.decay_muzzy.purged,
&astats->astats.decay_muzzy.purged);
ctl_accum_locked_u64(
&sdstats->astats.pa_shard_stats.decay_muzzy.npurge,
&astats->astats.pa_shard_stats.decay_muzzy.npurge);
ctl_accum_locked_u64(
&sdstats->astats.pa_shard_stats.decay_muzzy.nmadvise,
&astats->astats.pa_shard_stats.decay_muzzy.nmadvise);
ctl_accum_locked_u64(
&sdstats->astats.pa_shard_stats.decay_muzzy.purged,
&astats->astats.pa_shard_stats.decay_muzzy.purged);
#define OP(mtx) malloc_mutex_prof_merge( \
&(sdstats->astats.mutex_prof_data[ \
@@ -2920,23 +2926,29 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_extent_avail,
CTL_RO_CGEN(config_stats, stats_arenas_i_dirty_npurge,
locked_read_u64_unsynchronized(
&arenas_i(mib[2])->astats->astats.decay_dirty.npurge), uint64_t)
&arenas_i(mib[2])->astats->astats.pa_shard_stats.decay_dirty.npurge),
uint64_t)
CTL_RO_CGEN(config_stats, stats_arenas_i_dirty_nmadvise,
locked_read_u64_unsynchronized(
&arenas_i(mib[2])->astats->astats.decay_dirty.nmadvise), uint64_t)
&arenas_i(mib[2])->astats->astats.pa_shard_stats.decay_dirty.nmadvise),
uint64_t)
CTL_RO_CGEN(config_stats, stats_arenas_i_dirty_purged,
locked_read_u64_unsynchronized(
&arenas_i(mib[2])->astats->astats.decay_dirty.purged), uint64_t)
&arenas_i(mib[2])->astats->astats.pa_shard_stats.decay_dirty.purged),
uint64_t)
CTL_RO_CGEN(config_stats, stats_arenas_i_muzzy_npurge,
locked_read_u64_unsynchronized(
&arenas_i(mib[2])->astats->astats.decay_muzzy.npurge), uint64_t)
&arenas_i(mib[2])->astats->astats.pa_shard_stats.decay_muzzy.npurge),
uint64_t)
CTL_RO_CGEN(config_stats, stats_arenas_i_muzzy_nmadvise,
locked_read_u64_unsynchronized(
&arenas_i(mib[2])->astats->astats.decay_muzzy.nmadvise), uint64_t)
&arenas_i(mib[2])->astats->astats.pa_shard_stats.decay_muzzy.nmadvise),
uint64_t)
CTL_RO_CGEN(config_stats, stats_arenas_i_muzzy_purged,
locked_read_u64_unsynchronized(
&arenas_i(mib[2])->astats->astats.decay_muzzy.purged), uint64_t)
&arenas_i(mib[2])->astats->astats.pa_shard_stats.decay_muzzy.purged),
uint64_t)
CTL_RO_CGEN(config_stats, stats_arenas_i_base,
atomic_load_zu(&arenas_i(mib[2])->astats->astats.base, ATOMIC_RELAXED),