psset: Do first-fit based on slab age.

This functions more like the serial number strategy of the ecache and
hpa_central_t.  Longer-lived slabs are more likely to continue to live for
longer in the future.
This commit is contained in:
David Goldblatt
2020-09-18 16:36:40 -07:00
committed by David Goldblatt
parent 634ec6f50a
commit d16849c91d
3 changed files with 100 additions and 32 deletions

View File

@@ -44,7 +44,7 @@ struct psset_s {
* The pageslabs, quantized by the size class of the largest contiguous
* free run of pages in a pageslab.
*/
edata_heap_t pageslabs[PSSET_NPSIZES];
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
@@ -52,6 +52,9 @@ struct psset_s {
*/
psset_bin_stats_t full_slab_stats;
psset_bin_stats_t slab_stats[PSSET_NPSIZES];
/* How many alloc_new calls have happened? */
uint64_t age_counter;
};
void psset_init(psset_t *psset);