psset: Move in stats.
A later change will benefit from having these functions pulled into a psset-module set of functions.
This commit is contained in:
committed by
David Goldblatt
parent
d0a991d47b
commit
c1b2a77933
@@ -35,8 +35,7 @@ struct hpa_s {
|
||||
/* Used only by CTL; not actually stored here (i.e., all derived). */
|
||||
typedef struct hpa_shard_stats_s hpa_shard_stats_t;
|
||||
struct hpa_shard_stats_s {
|
||||
psset_bin_stats_t psset_full_slab_stats;
|
||||
psset_bin_stats_t psset_slab_stats[PSSET_NPSIZES];
|
||||
psset_stats_t psset_stats;
|
||||
};
|
||||
|
||||
typedef struct hpa_shard_s hpa_shard_t;
|
||||
@@ -89,6 +88,9 @@ bool hpa_init(hpa_t *hpa, base_t *base, emap_t *emap,
|
||||
bool hpa_shard_init(hpa_shard_t *shard, hpa_t *hpa,
|
||||
edata_cache_t *edata_cache, unsigned ind, size_t ps_goal,
|
||||
size_t ps_alloc_max, size_t small_max, size_t large_min);
|
||||
|
||||
void hpa_stats_accum(hpa_shard_stats_t *dst, hpa_shard_stats_t *src);
|
||||
void hpa_stats_merge(tsdn_t *tsdn, hpa_shard_t *shard, hpa_shard_stats_t *dst);
|
||||
/*
|
||||
* Notify the shard that we won't use it for allocations much longer. Due to
|
||||
* the possibility of races, we don't actually prevent allocations; just flush
|
||||
|
@@ -31,12 +31,16 @@ struct psset_bin_stats_s {
|
||||
size_t ninactive;
|
||||
};
|
||||
|
||||
static inline void
|
||||
psset_bin_stats_accum(psset_bin_stats_t *dst, psset_bin_stats_t *src) {
|
||||
dst->npageslabs += src->npageslabs;
|
||||
dst->nactive += src->nactive;
|
||||
dst->ninactive += src->ninactive;
|
||||
}
|
||||
/* Used only by CTL; not actually stored here (i.e., all derived). */
|
||||
typedef struct psset_stats_s psset_stats_t;
|
||||
struct psset_stats_s {
|
||||
/*
|
||||
* Full slabs don't live in any edata heap. But we still track their
|
||||
* stats.
|
||||
*/
|
||||
psset_bin_stats_t full_slabs;
|
||||
psset_bin_stats_t nonfull_slabs[PSSET_NPSIZES];
|
||||
};
|
||||
|
||||
typedef struct psset_s psset_t;
|
||||
struct psset_s {
|
||||
@@ -46,18 +50,14 @@ struct psset_s {
|
||||
*/
|
||||
edata_age_heap_t pageslabs[PSSET_NPSIZES];
|
||||
bitmap_t bitmap[BITMAP_GROUPS(PSSET_NPSIZES)];
|
||||
/*
|
||||
* Full slabs don't live in any edata heap. But we still track their
|
||||
* stats.
|
||||
*/
|
||||
psset_bin_stats_t full_slab_stats;
|
||||
psset_bin_stats_t slab_stats[PSSET_NPSIZES];
|
||||
psset_stats_t stats;
|
||||
|
||||
/* How many alloc_new calls have happened? */
|
||||
uint64_t age_counter;
|
||||
};
|
||||
|
||||
void psset_init(psset_t *psset);
|
||||
void psset_stats_accum(psset_stats_t *dst, psset_stats_t *src);
|
||||
|
||||
void psset_insert(psset_t *psset, edata_t *ps);
|
||||
void psset_remove(psset_t *psset, edata_t *ps);
|
||||
|
Reference in New Issue
Block a user