Model
Write amplification of garbage collection
To free the block, you copy the v fraction elsewhere. Only (1 − v) of the block becomes new free space.
- Write amplification
- bytes physically written to flash ÷ bytes the host asked to write
- Valid fraction
- the fraction of its pages that are still valid
How it behaves
One input on the horizontal axis, the others held fixed.
Data table
| Valid fraction v | WAF |
|---|---|
| 0 | 1× |
| 0.012 | 1.01× |
| 0.024 | 1.02× |
| 0.036 | 1.04× |
| 0.048 | 1.05× |
| 0.059 | 1.06× |
| 0.071 | 1.08× |
| 0.083 | 1.09× |
| 0.095 | 1.1× |
| 0.107 | 1.12× |
| 0.119 | 1.13× |
| 0.131 | 1.15× |
| 0.142 | 1.17× |
| 0.154 | 1.18× |
| 0.166 | 1.2× |
| 0.178 | 1.22× |
| 0.19 | 1.23× |
| 0.202 | 1.25× |
| 0.214 | 1.27× |
| 0.226 | 1.29× |
| 0.237 | 1.31× |
| 0.249 | 1.33× |
| 0.261 | 1.35× |
| 0.273 | 1.38× |
| 0.285 | 1.4× |
| 0.297 | 1.42× |
| 0.309 | 1.45× |
| 0.321 | 1.47× |
| 0.332 | 1.5× |
| 0.344 | 1.53× |
| 0.356 | 1.55× |
| 0.368 | 1.58× |
| 0.38 | 1.61× |
| 0.392 | 1.64× |
| 0.404 | 1.68× |
| 0.416 | 1.71× |
| 0.427 | 1.75× |
| 0.439 | 1.78× |
| 0.451 | 1.82× |
| 0.463 | 1.86× |
| 0.475 | 1.9× |
| 0.487 | 1.95× |
| 0.499 | 2× |
| 0.511 | 2.04× |
| 0.522 | 2.09× |
| 0.534 | 2.15× |
| 0.546 | 2.2× |
| 0.558 | 2.26× |
| 0.57 | 2.33× |
| 0.582 | 2.39× |
| 0.594 | 2.46× |
| 0.606 | 2.54× |
| 0.617 | 2.61× |
| 0.629 | 2.7× |
| 0.641 | 2.79× |
| 0.653 | 2.88× |
| 0.665 | 2.99× |
| 0.677 | 3.09× |
| 0.689 | 3.21× |
| 0.701 | 3.34× |
| 0.713 | 3.48× |
| 0.724 | 3.63× |
| 0.736 | 3.79× |
| 0.748 | 3.97× |
| 0.76 | 4.17× |
| 0.772 | 4.38× |
| 0.784 | 4.62× |
| 0.796 | 4.89× |
| 0.807 | 5.19× |
| 0.819 | 5.54× |
| 0.831 | 5.93× |
| 0.843 | 6.37× |
| 0.855 | 6.9× |
| 0.867 | 7.51× |
| 0.879 | 8.25× |
| 0.891 | 9.14× |
| 0.903 | 10.3× |
| 0.914 | 11.7× |
| 0.926 | 13.6× |
| 0.938 | 16.2× |
| 0.95 | 20× |
Worked examples, recomputed
Every number the mechanisms quote for this relationship is recomputed from it, so none of them disagrees with it.
- u = 0.5 → 1 bytes moved per byte freed
- u = 0.9 → 9 bytes moved per byte freed
- u = 0.98 → 49 bytes moved per byte freed
- v = 0 → 1×
- v = 0.5 → 2×
- v = 0.9 → 10×
- v = 0.95 → 20×
Where it appears
Each mechanism states it in its own names. The general symbol each name stands for is shown with it.
- Physical Substrate & Performance Laws
Why do trade-offs exist at all?
- Storage: Physical Organization
What should sit next to what, given that I must decide at write time and find out at read time?
u (live fraction of the unit) =