Research notes / SSD capacity accounting
SSD over-provisioning: the denominator changes the answer
12 October 2026 / Literature review and analytical reproduction
A 20% reserve can mean two different capacities. Specify the denominator before comparing over-provisioning, then specify the workload before predicting write amplification. Neither percentage alone is a performance guarantee.
One reserve, two percentages
Let P be physical capacity available to the cleaning model and L its logical data capacity, in identical units. Reserve is P - L. Kingston's published convention divides that reserve by user capacity. [3] Desnoyers instead defines a spare factor using total capacity. [2, section 2]
- Logical-capacity basis:
rho = (P - L) / L. - Physical-capacity basis:
s = (P - L) / P. - Conversion:
s = rho / (1 + rho), andrho = s / (1 - s).
For an invented 100-unit device exposing 80 units, the same 20-unit reserve is 20% of physical capacity and 25% of logical capacity. Conversely, 20% on the logical basis gives 83.333 logical units out of 100 physical units, not 80.
Keep byte units explicit: GB and GiB are not interchangeable. Also keep the capacity boundary explicit. Do not assume every byte absent from advertised capacity is available for garbage collection; our P describes a mathematical pool, not a reverse-engineered accounting of a commercial SSD.
What the equation actually predicts
Xiang and Kurkoski assume independent, uniformly distributed page writes and greedy collection, which chooses the block with the most invalid pages. Their asymptotic equation 12 approximates stationary write amplification. We evaluate that equation, not their simulator. [1]
If fraction q of a victim block is reclaimed, one cycle provides q blocks of host-write space while programming one block in total: new data plus relocated valid data. Thus A = 1 / q. The asymptotic equation becomes:
q = 1 - exp(-(1 + rho) q), 0 < q < 1
Our code solves the equivalent finite-A equation by bisection. The zero-reclamation root is excluded. At 30% logical-basis OP it yields 2.364, consistent with the paper's rounded analytical value 2.36. Its reported simulation value 2.35 is not a hardware measurement. [1, Table I]
| Reserve / logical | Reserve / physical | Model A | Victim pages reclaimed |
|---|---|---|---|
| 7% | 6.54% | 7.817 | 12.79% |
| 10% | 9.09% | 5.677 | 17.61% |
| 20% | 16.67% | 3.188 | 31.37% |
| 25% | 20.00% | 2.693 | 37.14% |
| 30% | 23.08% | 2.364 | 42.30% |
| 50% | 33.33% | 1.716 | 58.28% |
| 100% | 50.00% | 1.255 | 79.68% |
Download the CSV, provenance JSON and evaluator. The supported input range is 1%-100% OP on the logical basis. No device I/O or third-party runtime package is required.
Why this is not a universal SSD curve
Desnoyers gives the same algebraic form for LRU cleaning, but a different finite-block greedy model. At spare factor 0.07, his analytical tables give 7.318 for LRU and 6.623 for greedy cleaning with 64-page blocks. These are different cleaning assumptions, not competing measurements of one drive. [2, sections 3.1-3.2, Tables 1-2]
The two papers should therefore not be flattened into the statement "OP determines WAF." Desnoyers also studies separating frequently and rarely updated data, showing that placement and allocation of spare space between pools matter. Temperature here means update frequency, not degrees Celsius. [2, sections 4-6]
Our curve excludes metadata writes, parity, wear-leveling traffic, compression, cache folding and firmware-specific scheduling. It supplies neither latency nor a lifetime estimate. A real counter measurement must name what its numerator counts and use the same interval for host and physical writes.
How to use the result
Use the conversion when reading a paper or capacity claim. Use the model as an explicit baseline for a uniform random overwrite workload, not as a rule to reserve a particular percentage on every SSD. Model agreement verifies arithmetic; it does not validate a controller implementation.
A follow-up experiment should hold firmware, workload and preparation constant, report the address range and valid-data occupancy, and record supported write counters. Filesystem free space alone does not establish what the controller considers invalid. See discard semantics and steady-state measurement. We performed no drive writes or hardware experiment here.
Corpus: over-provisioning, greedy garbage collection, and hot/cold data separation.
Primary sources
- Luojie Xiang and Brian M. Kurkoski. An Improved Analytic Expression for Write Amplification in NAND Flash. arXiv:1110.4245v1 (19 October 2011), sections II-IV, equation 12 and Table I.
- Peter Desnoyers. Analytic Modeling of SSD Write Performance. SYSTOR 2012, sections 2-6, Tables 1-2. DOI: 10.1145/2367589.2367603.
- Kingston. Understanding SSD Over-provisioning (OP). March 2019; user-capacity denominator.
Reviewed 11 October 2026 UTC. Original code and computed rows: CC0. Source publications retain their rights. No observed sample, confidence interval, vendor ranking or new empirical discovery is claimed.