PA: Move mapped into pa stats.

This commit is contained in:
David Goldblatt
2020-03-09 12:06:19 -07:00
committed by David Goldblatt
parent 6ca918d0cf
commit 70d12ffa05
7 changed files with 44 additions and 35 deletions

View File

@@ -148,15 +148,18 @@ arena_decay_extent(tsdn_t *tsdn,arena_t *arena, ehooks_t *ehooks,
extent_dalloc_wrapper(tsdn, arena, ehooks, edata);
if (config_stats) {
/* Update stats accordingly. */
LOCKEDINT_MTX_LOCK(tsdn, arena->stats.mtx);
locked_inc_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
LOCKEDINT_MTX_LOCK(tsdn, *arena->pa_shard.stats_mtx);
locked_inc_u64(tsdn,
LOCKEDINT_MTX(*arena->pa_shard.stats_mtx),
&arena->pa_shard.stats->decay_dirty.nmadvise, 1);
locked_inc_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
locked_inc_u64(tsdn,
LOCKEDINT_MTX(*arena->pa_shard.stats_mtx),
&arena->pa_shard.stats->decay_dirty.purged,
extent_size >> LG_PAGE);
locked_dec_zu(tsdn, LOCKEDINT_MTX(arena->stats.mtx),
&arena->stats.mapped, extent_size);
LOCKEDINT_MTX_UNLOCK(tsdn, arena->stats.mtx);
locked_dec_zu(tsdn,
LOCKEDINT_MTX(*arena->pa_shard.stats_mtx),
&arena->pa_shard.stats->mapped, extent_size);
LOCKEDINT_MTX_UNLOCK(tsdn, *arena->pa_shard.stats_mtx);
}
}

View File

@@ -61,12 +61,6 @@ struct arena_stats_extents_s {
typedef struct arena_stats_s arena_stats_t;
struct arena_stats_s {
LOCKEDINT_MTX_DECLARE(mtx)
/*
* Number of bytes currently mapped, excluding retained memory.
*/
locked_zu_t mapped; /* Partially derived. */
/*
* Number of unused virtual memory bytes currently retained. Retained
* bytes are technically mapped (though always decommitted or purged),
@@ -135,12 +129,4 @@ arena_stats_large_flush_nrequests_add(tsdn_t *tsdn, arena_stats_t *arena_stats,
LOCKEDINT_MTX_UNLOCK(tsdn, arena_stats->mtx);
}
static inline void
arena_stats_mapped_add(tsdn_t *tsdn, arena_stats_t *arena_stats, size_t size) {
LOCKEDINT_MTX_LOCK(tsdn, arena_stats->mtx);
locked_inc_zu(tsdn, LOCKEDINT_MTX(arena_stats->mtx),
&arena_stats->mapped, size);
LOCKEDINT_MTX_UNLOCK(tsdn, arena_stats->mtx);
}
#endif /* JEMALLOC_INTERNAL_ARENA_STATS_H */

View File

@@ -35,6 +35,14 @@ typedef struct pa_shard_stats_s pa_shard_stats_t;
struct pa_shard_stats_s {
pa_shard_decay_stats_t decay_dirty;
pa_shard_decay_stats_t decay_muzzy;
/*
* Number of bytes currently mapped, excluding retained memory.
*
* Partially derived -- we maintain our own counter, but add in the
* base's own counter at merge.
*/
locked_zu_t mapped;
/* VM space had to be leaked (undocumented). Normally 0. */
atomic_zu_t abandoned_vm;
};
@@ -60,12 +68,21 @@ struct pa_shard_s {
/* Extent serial number generator state. */
atomic_zu_t extent_sn_next;
malloc_mutex_t *stats_mtx;
pa_shard_stats_t *stats;
};
static inline void
pa_shard_stats_mapped_add(tsdn_t *tsdn, pa_shard_t *shard, size_t size) {
LOCKEDINT_MTX_LOCK(tsdn, *shard->stats_mtx);
locked_inc_zu(tsdn, LOCKEDINT_MTX(*shard->stats_mtx),
&shard->stats->mapped, size);
LOCKEDINT_MTX_UNLOCK(tsdn, *shard->stats_mtx);
}
/* Returns true on error. */
bool pa_shard_init(tsdn_t *tsdn, pa_shard_t *shard, base_t *base, unsigned ind,
pa_shard_stats_t *stats);
pa_shard_stats_t *stats, malloc_mutex_t *stats_mtx);
size_t pa_shard_extent_sn_next(pa_shard_t *shard);
#endif /* JEMALLOC_INTERNAL_PA_H */