Expand description
Fragmentation under churn: how a pool behaves when variable-length runs come and go.
Measured on the host with the synthetic workload of the churn_table test
(256-page pool, runs of 2 to 40 pages uniformly, 4000 allocations per
seed with random victims freed until each fits, averaged over seeds 1 to 8;
this is a stress shape, not a game trace):
| policy | blocked by fragmentation | mean free-space fragmentation | mean pool use |
|---|---|---|---|
| first-fit | 1846 of 4000 | 558 permille | 811 permille |
| best-fit | 1732 of 4000 | 520 permille | 823 permille |
| first-fit + compaction | 0 | 107 permille | 946 permille |
| best-fit + compaction | 0 | 103 permille | 946 permille |
Placement policy matters little; compaction (about 450 000 pages moved per 4000 allocations here) is what turns scattered free pages back into usable ones. That is why the engine compacts movable categories before it evicts, and why pinned and in-flight runs, which cannot move, are the cost.
Structs§
- Churn
Config - A churn experiment.
- Churn
Report - What a churn run found.
Functions§
- churn_
report - Run the experiment. Deterministic for a given configuration.