From 3c28aa6f179421b23fd8795cbcaa4696aba99557 Mon Sep 17 00:00:00 2001 From: David Goldblatt Date: Wed, 11 Mar 2020 18:14:53 -0700 Subject: [PATCH] PA: Move edata_avail stat in, make it non-atomic. --- include/jemalloc/internal/arena_stats.h | 3 --- include/jemalloc/internal/pa.h | 3 +++ src/arena.c | 5 ++--- src/ctl.c | 8 +++----- src/pa.c | 2 -- 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/include/jemalloc/internal/arena_stats.h b/include/jemalloc/internal/arena_stats.h index 9dc9e5f2..496d6e70 100644 --- a/include/jemalloc/internal/arena_stats.h +++ b/include/jemalloc/internal/arena_stats.h @@ -52,9 +52,6 @@ struct arena_stats_s { */ locked_zu_t retained; /* Derived. */ - /* Number of edata_t structs allocated by base, but not being used. */ - atomic_zu_t edata_avail; /* Derived. */ - atomic_zu_t base; /* Derived. */ atomic_zu_t internal; atomic_zu_t resident; /* Derived. */ diff --git a/include/jemalloc/internal/pa.h b/include/jemalloc/internal/pa.h index acfad89f..9da061be 100644 --- a/include/jemalloc/internal/pa.h +++ b/include/jemalloc/internal/pa.h @@ -69,6 +69,9 @@ struct pa_shard_stats_s { */ locked_zu_t mapped; + /* Number of edata_t structs allocated by base, but not being used. */ + size_t edata_avail; /* Derived. */ + /* VM space had to be leaked (undocumented). Normally 0. */ atomic_zu_t abandoned_vm; }; diff --git a/src/arena.c b/src/arena.c index 2deafe68..025418d6 100644 --- a/src/arena.c +++ b/src/arena.c @@ -100,9 +100,8 @@ arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, locked_inc_zu_unsynchronized(&astats->retained, ecache_npages_get(&arena->pa_shard.ecache_retained) << LG_PAGE); - atomic_store_zu(&astats->edata_avail, - atomic_load_zu(&arena->pa_shard.edata_cache.count, ATOMIC_RELAXED), - ATOMIC_RELAXED); + astats->pa_shard_stats.edata_avail = atomic_load_zu( + &arena->pa_shard.edata_cache.count, ATOMIC_RELAXED); /* Dirty decay stats */ locked_inc_u64_unsynchronized( diff --git a/src/ctl.c b/src/ctl.c index 16798679..e8687b51 100644 --- a/src/ctl.c +++ b/src/ctl.c @@ -866,8 +866,8 @@ ctl_arena_stats_sdmerge(ctl_arena_t *ctl_sdarena, ctl_arena_t *ctl_arena, &astats->astats.pa_shard_stats.mapped); ctl_accum_locked_zu(&sdstats->astats.retained, &astats->astats.retained); - ctl_accum_atomic_zu(&sdstats->astats.edata_avail, - &astats->astats.edata_avail); + sdstats->astats.pa_shard_stats.edata_avail + += astats->astats.pa_shard_stats.edata_avail; } ctl_accum_locked_u64( @@ -2919,9 +2919,7 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_retained, locked_read_atomic_zu(&arenas_i(mib[2])->astats->astats.retained), size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_extent_avail, - atomic_load_zu(&arenas_i(mib[2])->astats->astats.edata_avail, - ATOMIC_RELAXED), - size_t) + arenas_i(mib[2])->astats->astats.pa_shard_stats.edata_avail, size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_dirty_npurge, locked_read_u64_unsynchronized( diff --git a/src/pa.c b/src/pa.c index d678d823..d67c97ea 100644 --- a/src/pa.c +++ b/src/pa.c @@ -368,5 +368,3 @@ pa_maybe_decay_purge(tsdn_t *tsdn, pa_shard_t *shard, decay_t *decay, return epoch_advanced; } - -