HPA: add size-exclusion functionality.
I.e. only allowing allocations under or over certain sizes.
This commit is contained in:
committed by
David Goldblatt
parent
484f04733e
commit
534504d4a7
@@ -59,6 +59,17 @@ struct hpa_shard_s {
|
||||
* fragmentation avoidance measure.
|
||||
*/
|
||||
size_t ps_alloc_max;
|
||||
/*
|
||||
* What's the maximum size we'll try to allocate out of the shard at
|
||||
* all?
|
||||
*/
|
||||
size_t small_max;
|
||||
/*
|
||||
* What's the minimum size for which we'll go straight to the global
|
||||
* arena?
|
||||
*/
|
||||
size_t large_min;
|
||||
|
||||
/* The arena ind we're associated with. */
|
||||
unsigned ind;
|
||||
};
|
||||
@@ -67,7 +78,7 @@ bool hpa_init(hpa_t *hpa, base_t *base, emap_t *emap,
|
||||
edata_cache_t *edata_cache);
|
||||
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 ps_alloc_max, size_t small_max, size_t large_min);
|
||||
void hpa_shard_destroy(tsdn_t *tsdn, hpa_shard_t *shard);
|
||||
|
||||
/*
|
||||
|
@@ -15,6 +15,8 @@ extern bool opt_confirm_conf;
|
||||
extern bool opt_hpa;
|
||||
extern size_t opt_hpa_slab_goal;
|
||||
extern size_t opt_hpa_slab_max_alloc;
|
||||
extern size_t opt_hpa_small_max;
|
||||
extern size_t opt_hpa_large_min;
|
||||
extern const char *opt_junk;
|
||||
extern bool opt_junk_alloc;
|
||||
extern bool opt_junk_free;
|
||||
|
@@ -124,7 +124,7 @@ bool pa_shard_init(tsdn_t *tsdn, pa_shard_t *shard, emap_t *emap, base_t *base,
|
||||
* that we can boot without worrying about the HPA, then turn it on in a0.
|
||||
*/
|
||||
bool pa_shard_enable_hpa(pa_shard_t *shard, hpa_t *hpa, size_t ps_goal,
|
||||
size_t ps_alloc_max);
|
||||
size_t ps_alloc_max, size_t small_max, size_t large_min);
|
||||
/*
|
||||
* We stop using the HPA when custom extent hooks are installed, but still
|
||||
* redirect deallocations to it.
|
||||
|
Reference in New Issue
Block a user