Back to the FTL & GC Sandbox

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.