TODO
Fragmentation after a size shift
After many small allocations are churned and partly freed, the remaining free space is more scattered than VMA's. Large allocations then fit worse.
Bench A4 (cd bench && cargo run --release -- fragmentation), deterministic, mean of 10 seeds:
| largest free range / free | large allocations placed / free | |
|---|---|---|
| volcanic-mem | 47.0% | 52.0% |
| VMA (TLSF) | 57.0% | 58.0% |
Likely cause: where small allocations are placed (Tlsf::allocate_tight prefers the untouched tail; FIT_BUDGET and the two-pass block scan).
Any change must be checked against B1 speed (device) and B2 reserved memory (reserved) as well. Improving one has regressed the other before.
Reserved memory vs. gpu-allocator
Bench B2 (reserved): peak reserved memory is 40.4% above peak live bytes for volcanic-mem and VMA, but 31.5% for gpu-allocator.