lowSlabAllocationWatermak [%] (try to insert to a different tier if at least this much percent of slabs are allocated in DRAM. If the number of slabs is less than the watermark, insertion always happens to DRAM, otherwise, we look at different policies (below))
lowAcAllocationWatermark [%] (try to insert to a different tier if at least this much memory is allocated in DRAM for specified allocation class. If the amount of memory is less than the watermark, insertion always happens to DRAM, otherwise, we look at different policies (below))
highAcAllocationWatermark [%] (if there is at least this much memory allocated in DRAM, always allocate in the lower tier. if amount of memory is between lowAcAllocationWatermark and highAcAllocationWatermark, look at the below policies).
sizeThresholdPolicy [bytes] (if the element is smaller than this size, allocate in DRAM)
defaultTierChancePercentage [%] (if none of the above policies selected the tier, allocate memory with this probability in DRAM)
Eviction policies (below params are per-tier, we should experiment with setting the for lower [PMEM] tier):
for LRU:
lruInsertionPointSpec (specifies how far from the head should we insert the item)
markUsefulChance (chance of an item being moved to the head of LRU on mark useful)
for LRU2Q:
lruInsertionPointSpec (specifies to which queue: cold, warm, or hot should the element be inserted)
markUsefulChance (chance of an item being moved to the head of LRU on mark useful)
Eviction policies (below params are per-tier, we should experiment with setting the for lower [PMEM] tier):
for LRU2Q:
Above config params are available here: https://github.com/igchor/CacheLib-1/tree/add_more_params_and_stats
Not yet implemented: