SSD写放大

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

由于GC的存在,就有一个问题,用户要写入一定的数据,SSD为了腾出空间写这些数据,需要额外的做一些数据的搬移,也就是额外的写,最后导致的后果往往就是SSD往闪存中写入的数据量比实际用户写入SSD的数据量多。因此,我们SSD中有个重要参数,就是写放大(WA, Write Amplification):

image

对空盘来说(未触发GC),写放大一般为1,即用户写入多少数据,SSD写入闪存也是多少数据量(这里忽略SSD内部数据的写,如映射表的写入)。在SandForce控制器出来之前,写放大最小值为1。但是由于SandForce控制器内部具有实时数据压缩模块,它能对用户写入的数据进行实时压缩,然后再把它们写入到闪存,因此WA可以做到小于1。举个例子,用户写入8KB数据,经压缩后,数据变为4KB,如果这个时候还没有垃圾回收,那么写放大就只有0.5。

一说到SandForce的主控,过去好多年了,我对她的爱还是没有减弱,女神一般的存在呀。。。

来看看GC触发后,WA是怎么算的。以前面GC为例,我们挑选每个Die上的Block 0做垃圾回收:

image

一共36个方块,其中有12个有效数据块,我们做完垃圾回收后,需把这12个有效数据块写回:

image

后面还可以写入24个方块的用户数据。因此,为了写这24个方块的用户数据,SSD实际写了12个方块的原有效数据,再加上该24个方块的用户数据,总共写入36个方块数据,按照写放大定义:WA= 36/24 = 1.5 。

写放大越大,意味着额外写入闪存的数据越多,一方面磨损闪存,减少SSD寿命,另一方面,写入这些额外数据时会占用底层闪存带宽,影响SSD性能。因此,SSD设计的一个目标不是没有蛀牙,而是让WA尽量小。减小写放大,可以使用前面提到的压缩办法(主控决定),顺序写也可以减小写放大(垃圾集中,但顺序写可遇不可求,取决于用户workload),还有就是增大OP (这个可控)。

增大OP怎么就能减小写放大? 先定义OP比例=(闪存空间-用户空间)/用户空间。

还是以前面SSD空间为例,SSD容量是180个小方块,当OP是36个小方块时,整个SSD闪存空间为216个小方块,OP比例是36/180= 20%。那么180个小方块的用户数据平均分摊到216个小方块时,每个小方块的平均有效数据为180/216 = 0.83,一个闪存块上的有效数据为0.83*9 = 7.5,也就是一个闪存块上面平均有7.5个小绿块和1.5个小红块。为了写1.5个用户数据方块,需要写9个方块的数据(原有7.5个有效数据,加1.5个用户数据),写放大是9/1.5 = 6。

如果整个SSD闪存空间不变,还是216个小方块,调整OP比例至72个小方块 (牺牲用户空间,OP比例50%),因此,SSD容量就变成144个小方块。144个小方块的用户数据平均分摊到216个小方块时,每个小方块的平均有效数据为144/216 = 0.67,一个闪存块上的有效数据为0.67*9 = 6,也就是一个闪存块上面平均有6个小绿块和3个小红块。为了写3个用户数据方块,需要写9个方块的数据(原有6个有效数据,加3个用户数据),写放大是9/3 = 3。

从中看出,OP越大,写放大越小。很好理解,OP越大,每个闪存块有效数据越少,垃圾越多,因此需要重写更少的数据,因此写放大越小。同时,由于GC需要重写的数据越少,SSD满盘写性能也越好。

当然,上面说的都是最坏情况(垃圾数据平均分摊到每个闪存块上)。现实是,垃圾数据更多时候并不是平均分配到每个闪存块上去,有些块上的垃圾多,有些块上的垃圾少,实际GC挑选闪存块,是挑垃圾多的,因此,实际写放大是小于前面的计算值的。

OP大小和写放大以及SSD耐写度的关系见图:

image

图1-1 OP大小对写放大和耐写度的影响

总结一下:

WA越小越好,因为越小意味着对闪存损耗越小,可以给闪存延年益寿,从而支持更多的用户数据写入量;OP越大越好,OP越大,意味着写放大越小,意味着SSD写性能越好。

影响写放大的因素主要有:

查看更多内容,扫描下图二维码,阅读原著和以上大图。

_wechat_thumb2_thumb_thumb_thumb_thumb_thumb_thumb_thumb_thumb_thumb_thumb_thumb_thumb_thumb

分类目录 SSD, 技术文章 和标签 .
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。