# 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.
