搬移一个块要付多少代价
垃圾回收的成本可以用一个很简单的模型说清楚。设被回收块中有效页比例为 u,擦除这个块之前必须先把这部分有效页搬到别处,净回收的空间是 1-u。于是每写入一个用户页,附带的搬移写入约为 u 除以 1-u,稳态写放大约为 1 除以 1-u。u 从 0.5 升到 0.8,写放大就从 2 涨到 5,这条曲线在高占用区间非常陡。这也解释了两件事:选块策略为什么要优先挑有效页最少的块,以及冷热分离为什么有价值。把生命周期相近的数据写进同一个块,块内的页倾向于同时失效,u 自然趋近于零。
前台读被后台搬移挡在门外
写放大只是账面成本,真正影响体验的是资源争用。NAND 的编程与擦除会长时间占住一个 die,前台读请求如果正好落在这个 die 上就只能排队等待,尾延迟随之被抬高。控制层面的应对包括按 die 与 plane 粒度调度回收任务、利用编程挂起让紧急读插队、给回收通路设定可动态调整的带宽配额,并在空闲窗口提前回收以积累可用块,让前台写在突发时不至于撞上紧急回收。低延迟 QoS 这项功能基线,落到实现上就是这几件事的组合。
OP 是调节稳态写放大的主旋钮
预留空间决定了稳态下块的平均有效页比例。OP 越大,同样的用户写入量分摊到更多物理块上,u 下降,写放大沿着上面那条非线性曲线快速改善。这一点在 CORE 7 系列的容量阶梯上体现得很直接:J750 规划 1.92、3.84、7.68、15.36TB,J770 规划 1.6、3.2、6.4、12.8TB,同代平台上后者以更低的标称容量换取更大的预留比例,对应的写入耐久目标从 1 DWPD 提高到 3 DWPD,4KB 随机写目标也从 300 KIOPS 提高到 600 KIOPS。耐久与稳态随机写性能同时改善,本质上是同一个变量在起作用。
为什么稳态数值必须预处理之后再测
全新盘上所有块都是空的,写入直接落到空块,回收几乎不触发,此时测出的随机写数值接近介质与通道的理论上限,与设备长期运行时能提供的能力没有关系。只有当所有物理块都被写过至少一轮、回收进入持续运行状态,写放大才会收敛到与预留空间和负载形态相匹配的稳定值。因此规格中的随机写指标必须注明按稳态口径给出,测试流程也必须包含清盘与预处理两步,并记录进入稳态所用的时长。上述指标为规划目标值。
