Performance

Write Amplification

Write amplification (WAF) is the ratio of actual data written to NAND flash versus the logical data written by the host. Because NAND must erase entire blocks before rewriting, the flash controller often writes more data than requested. A WAF of 1.0 is ideal; high WAF reduces both performance and SSD lifespan.

Why Write Amplification Matters

NAND flash can only be programmed at the page level (~4–16KB) but erased at the block level (~256 pages). When a host writes a single 4KB sector, the controller must:

  1. Read the entire 256-page block into a buffer
  2. Modify the target page
  3. Erase the block
  4. Write the entire block back

This can result in a WAF significantly above 1.0 under random-write workloads — meaning 10GB of host writes may cause 30–50GB of NAND writes.

Factors that increase WAF

  • Small random writes — The worst case; each 4KB write may trigger a full block rewrite.
  • High drive utilization — Less free space means more garbage collection, more data movement.
  • Frequent overwrites — Database WALs, log files, and write-heavy OLTP workloads stress WAF.

Reducing WAF

  • Over-provisioning — Reserve 20–30% of NAND capacity as free space for the controller to use for garbage collection.
  • Sequential write patterns — Aligning writes to erase block boundaries drastically reduces WAF.
  • NVMe namespaces — Separate namespaces per workload prevent write patterns from one tenant degrading another's endurance.
  • SPDK — User-space I/O via SPDK can implement custom FTL (flash translation layer) logic to minimize WAF for specific workloads.