杂说闪存番外:手机为什么越用越卡和闪存写放大

杂说闪存番外:手机为什么越用越卡和闪存写放大

也许你和我有一样的感受,手机刚买时运行还比较流畅,可是过了一段时间却越用却卡。这是不是手机厂商的阴谋,逼迫我们升级手机呢?其实这除了和我们安装的应用软件越来越多,而国产app经常不请自来在后台偷偷运行有关外,另外和手机的存储介质——闪存关系很大。

写放大(Write Amplification)

我们前文介绍FTL

老狼:杂谈闪存三:FTLzhuanlan.zhihu.com图标

时,介绍了闪存的存储特性。我们知道了闪存写入是以page为单位,而擦除是以block为单位,在写之前必须擦除。我们也知道了为了延长闪存的生命周期和寿命均衡(Wear Levelling),FTL用LBA/PBA表来映射逻辑和物理操作单位,而一般的消费级SSD和eMMC有7%的空闲块——OP(Over Provisioning)。我们今天来看看写放大和它对flash性能的影响。

理解写放大,我们假设要写入一个4KB的数据,可是一个块里已经没有干净空间了,但是有失效的数据可以擦除,所以主控就把所有的数据搬到缓存或者OP空间,然后擦除块,再加上这个4KB新数据写回去,这个操作就造成了写入放大,即本来是写4K的数据,却造成了整个块(512KB)的写入操作,也就是128倍放大。当然我们前文提到LBA/PBA并不是简单的block,而垃圾收集和Trim对写放大都有所减缓。但随着闪存空闲空间越来越少,主控的腾挪空间也越来越少。IBM Zurich Research Laboratory做的研究证明写放大和空闲净块关系极大,如下图:


可以看出,在空闲块少后,写放大可以达到3到4倍。

我们新买的SSD和手机,空空如也的数据块让写性能达到最大,而随着程序和数据越来越多,写入性能也逐渐下降。那究竟空闲块少到多少才会性能下降,降到什么程度呢?

数据

根据Anandtech做的实验数据,我们la如下图:


横轴是时间,纵轴是写入IOPS。随着时间写入越来越多的随机4KB数据,开始100000的IOPS在某时刻剧烈下降,最后随着空闲干净块慢慢减少,稳定到了10000IOPS,效能下降到原来的10%!

当然最终用户使用情况没有这么恶劣,但数据说明写放大对效能的影响巨大。这也是为什么高端企业级SSD的op空间巨大的原因,Intel的SSD DC3700的op空间达到32%,这让它有了巨大的腾挪空间,它的曲线异常平滑:


这对服务器市场非常重要。

结论

数据表明,我们对手机存储空间或SSD使用大于75%后,写入性能就会因为写放大而大大下降。现在你是不是要考虑买个更大容量的手机了?

注:随着擦除次数增多,坏块出现会恶化写放大,本文不做讨论。

其他闪存相关文章:

老狼:杂说闪存一:关公战秦琼之 UFS VS NVMezhuanlan.zhihu.com图标老狼:杂谈闪存二:NOR和NAND Flashzhuanlan.zhihu.com图标老狼:杂谈闪存三:FTLzhuanlan.zhihu.com图标老狼:杂说闪存四:闪存硬盘接口大比拼zhuanlan.zhihu.com图标老狼:杂说闪存番外:SSD硬盘如何进行日常维护和Trimzhuanlan.zhihu.com图标老狼:杂说闪存番外:傲腾Optane与NAND闪存zhuanlan.zhihu.com图标老狼:杂说闪存番外:我们的数据存在固态硬盘上安全吗?zhuanlan.zhihu.com图标

欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。同时欢迎大家给本专栏和公众号投稿!

用微信扫描二维码加入UEFIBlog公众号

编辑于 2018-01-20

文章被以下专栏收录