2.5 SSD 之写放大

写放大(Write Amplification Factor, WAF), 有的时候也会写成WA

写放大最根本的原因是nand特性造成的,读写以page为单位,擦除以block为单位,不能覆盖写。

比如要写一个page H的数据,这时如果没有干净的block,需要做垃圾回收,把block x的3个有效page搬出来,擦除block x,再写入新数据。这样本来写入1个page数据,实际上却写了4个page。那写放大就是4/1 = 4。

WA = nand_bytes_written / host_bytes_written    (additional smart log中的2个参数,单位32MB)

假如是覆盖写,比如修改page B,有效数据和新的page b写入到新的block里,WA就是3。

Block大小也会影响写放大,Block越大其中的有效数据相对也会较多,因此数据搬移的也越多,写放大也就越大。

怎么减小写放大?

从公式上来看,host写入不变的情况下,只能想办法减小nand写入。

1. GC 优化,比如GC时选择垃圾多的,这样有效数据少搬移的数据就少。

还有trim功能对删除操作的通知(文件系统中设置discard),提升GC的效率也改善了写放大。

2. WL优化,比如冷热数据的分离处理,冷数据挪到EC(erase count)值最大的block中,这样也较少了GC对冷数据的搬移次数。

3. 数据压缩,取决于controller压缩能力,比如4k数据压缩成1k,那写入nand数据不就减少4倍?

4. 调节OP,数据区比例小了,每个block中的有效数据占比也减少,做GC操作时搬移数据也就相应减少。当然这个代价是减少了可用数据区。可以看很多产品的data sheet,比如同一个SSD同样的固件,3.84TB TLC SSD DWPD 1左右,3.2TB的3左右。

5. 上层软件优化,不同应用程序或者说不同的应用负载下,WAF也会有很大的差异。比如随机的数据会比顺序写入的WAF高很多,所以应用层的优化就是尽量整合成顺序写,或者顺序占比更多些。

6. 数据对齐,比如fio测试时设置的4k对齐,有一定程度减少数据非对其造成的多余搬移。

7. FTL算法优化,包括前面说的GC/WL等,还有后台扫描,LDPC等等算法的优劣都会对WAF有一定的影响。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值