Sources
FTL & GC Sandbox is an illustrative simulator, not a model of any real controller. This file says where each number and each claim on the page comes from. The page’s own settings are “teaching values”: round numbers chosen so the effects show up on a small drive. The experiment results are what the simulator computes at seed 1. They are reproducible, and they are outputs of this model, not measurements of a drive. Items the sources do not settle are listed under “Open items”. Checked on 2026-10-15 against the saved copies named below. On 2026-11-03 the page became a six-setup walkthrough on one drive map with one what-if chart, so the lifetime panel and the SLC cache model, and the sources only they used, left the page.
Papers
- Kawaguchi, Nishioka and Motoda, “A Flash-Memory Based File System”, USENIX Winter 1995. Used for: the cost-benefit policy, which scores a block by its age times the free space it would give back (1 - u) over the cost of copying its live data (2u: u to read and u to write back), where u is the valid fraction. The sandbox picks the block with the highest (1 - u) / 2u x age, where age is the time since the block closed. The saved text has the formula as an image; the 2u and 1 - u terms and the age factor are stated in its prose. Greedy (fewest valid pages) is the standard baseline policy and needs no paper.
- Chang, Hsieh and Kuo, “Endurance Enhancement of Flash-Memory Storage Systems: An Efficient Static Wear Leveling Design”, DAC 2007. Used for: the optional static wear-leveling pass, a block erasing table with one flag per block that forces cold blocks to be recycled once erases per flagged block reach T; the worst case of H - 1 hot blocks, C blocks of static data and one free block; the extra erase ratio C / (T (H + C) - C) and the extra copy ratio C N / ((T (H + C) - C) L). The page’s worked case is the paper’s: a 1GB MLCx2 device with 128 pages per block, H = 256 and C = 3,840. At T = 100 the paper’s Table 2 gives 0.946% more erases (“under 1%”) and its Table 3, with L = 16 pages copied per hot-block clean, gives 7.572% more live-page copies (the page rounds to about 7.6%). The table’s memory, one bit per block, is the paper’s k = 0 mode.
- Zhou et al., USENIX FAST 2021. Used for: with 4KB mapping units and 4-byte entries the logical-to-physical table is about 0.1% of capacity, about 1GB per 1TB, which is why drives keep it in DRAM. The sandbox’s own map, at 4 bytes a page and 16KiB pages, is shown at its real size for the drive on screen.
- Bjorling et al., “ZNS: Avoiding the Block Interface Tax for Flash-based SSDs”, USENIX ATC 2021, and NVMe TP4146 Flexible Data Placement (ratified 2022). Used for: “an oracle standing in for FDP or ZNS placement hints”. Both let the host keep data with different lifetimes apart. The sandbox does not model either interface: placement simply gives hot and cold host data their own streams.
Not settled by a saved source
- The dashed “textbook” line, (1 + OP) / (2 x OP), for greedy garbage collection under uniform random writes on a full drive. The library holds only the slide deck of Hu et al., “Write Amplification Analysis in Flash-Based Solid State Drives” (SYSTOR 2009); its plots are images, so it neither confirms nor contradicts the expression. The page labels the line an approximation and a reference, not a prediction. An earlier check found the line below this sandbox’s results (7.6 against about 9 at 7% overprovisioning, 2.3 against about 2.6 at 28%); the page notes that the sandbox holds a few blocks in reserve.
Teaching values
| Value | Setting | Source |
|---|---|---|
| Default drive | 256 blocks of 64 pages | Teaching value. Presets: Tiny 32 x 16, Large 1,024 x 128 |
| Page size | 16KiB | Teaching value, used only to state the drive’s size and map size |
| Map entry | 4 bytes a page | Same entry size as the FAST 2021 sizing above |
| Overprovisioning | 7% default, 5% to 50% | Teaching values. A small drive cannot run at the low end, so its minimum rises |
| Drive fullness | 85% default, 50% to 100% | Teaching value |
| Hot-cold workload | 20% of the pages take 80% of the writes; 1% to 50% hot and 50% to 99% of writes | Teaching value |
| Garbage collection reserve | 2 free blocks plus one per open stream, up to 14 extra | Teaching value. Collection runs until the reserve is back |
| Delete events | About one in 32 host writes deletes 8 live pages and creates 8 others | Teaching value |
| TRIM delay | 0 to 4,096 host writes | Teaching value |
| Static wear leveling | Off; threshold T = 3, 2 to 1,000 | Teaching value. The paper’s worked case uses T = 100 |
| Wear weight | 0% to 100% | Teaching value: an erase-count penalty when garbage collection picks a victim |
| Compressed size | 100%, 25% to 100% | Teaching value |
| Free block reuse | First in, first out | Model choice |
| Preconditioning | Every live logical page written once, then the counters zeroed | Model choice, so WAF is measured from a full drive |
| Seed | 1 | Every run is seeded and deterministic |
Results the sandbox computes
The six setups on the page start from the default drive and change only what is listed. Their results are outputs of this simulator at seed 1: sequential at 1.00 and uniform random near 2.7 at 7% and 85%; about 9 at 7%, about 2.5 at 28% and about 1.7 at 50% on a full drive; TRIM keeping WAF near 1.7 at 70% full; placement 2.4 to 2.2 at 28% with cost-benefit; cost-benefit 3.9 against greedy 4.5 at 15% under 80-20 writes; and wear evenness 68% against 88% after about 12 drive-fulls with the wear weight at 0% and 100%. The How it works section adds a WAF near 9 falling to about 1.2 with compressed size at 50%, and the bench text gives the block size sweep from about 2 at 8 pages to about 6 at 512 at 25% overprovisioning. The page says exact values move a little with the seed and the direction does not. Several of them are also filed in the Flash Library ledger as model results for Flash Foundations Part 7 and the TRIM and empty-drive myth pages, which reuse the sandbox.
Existing site wording the sandbox stays consistent with
- Flash Foundations Part 7: NAND writes a fresh page and erases a whole block; garbage collection copies live pages before an erase; write amplification is NAND page writes divided by host page writes. The Part 7 WAF figure (about 9 at 7% and about 2.6 at 28% on a full drive) is a run of this sandbox.
Open items for Sean
- A primary for the (1 + OP) / (2 x OP) approximation. Candidates to download by hand (no free copy found on 2026-10-15): Hu et al., “Write Amplification Analysis in Flash-Based Solid State Drives”, SYSTOR 2009, https://doi.org/10.1145/1534530.1534544, and Desnoyers, “Analytic Models of SSD Write Performance”, https://doi.org/10.1145/2577384. Whether either states this exact expression has not been checked.