WA(Write Amplification)写入放大

来源:互联网 发布:淘宝点客服旺旺没反应 编辑:程序博客网 时间:2024/04/29 02:20

WA(Write Amplification)写入放大:

WA是闪存及SSD相关的一个极为重要的属性。由于闪存必须先擦除才能再写入的特性,在执行这些操作时,数据都会被移动超过1次。这些重复的操作不单会增加写入的数据量,还会减少闪存的寿命,更吃光闪存的可用带宽而间接影响随机写入性能。WA这个术语在2008年被Intel公司和SiliconSystems公司(于2009 年被西部数据收购)第一次提出并在公开稿件里使用。
举个最简单的例子:当要写入一个4KB的数据时,最坏的情况是一个块里已经没有干净空间了,但有无效的数据可以擦除,所以主控就把所有的数据读到缓存,擦除块,缓存里更新整个块的数据,再把新数据写回去,这个操作带来的写入放大就是: 实际写4K的数据,造成了整个块(共1024KB)的写入操作,那就是放大了256倍。同时还带来了原本只需要简单一步写入4KB的操作变成:闪存读取 (1024KB)→缓存改(4KB)→闪存擦除(1024KB)→闪存写入(1024KB),共四步操作,造成延迟大大增加,速度变慢。所以说WA是影响 SSD随机写入性能和寿命的关键因素。
以100%随机4KB来写入,目前的大多数SSD主控,在最坏的情况下WA可以达到100以上。如果是100%持续的从低LBA写入到高LBA的话,WA可以做到1,实际使用中写入放大会介于这两者之间。
用户还可以设置一定的OP来减少WA,假设你有个128G的SSD,你只分了64G 的容量使用,那最坏情况下的写入放大就能减少约3倍。
许多因素影响SSD的WA。下面列出主要的因素,以及它们如何影响WA。
  • 1. 垃圾回收(GC)--- 虽然增加了写入放大,但是速度有提升。这个比较特殊的算法用来移动,合并,擦除闪存块来提升效率。(详见GC章节)
  • 2. 预留空间(OP)--- 减少写入放大,好。(预留空间越大,写入放大越低)在SSD上划出部分空间留给主控做优化,是用户不能操作的空间。(详见OP章节)
  • 3. Trim 开启后可以减少写入放大,好。一个ATA指令,由操作系统发送给SSD主控,告诉主控哪些数据是无效的并且可以不用做垃圾回收操作。(详见Trim章节)
  • 4. 可用容量减少写入放大,好。(可用空间越大,写入放大越低)用户使用中没有用到的空间。(需要有Trim支持,不然不会影响写入放大。)
  • 5. 安全擦除 Secure Erase 减少写入放大,好。ATA安全擦除命令用来清除在磁盘上的所有用户数据,这个指令会让SSD回到出厂时的性能(最优性能,最少写入放大),但是随着使用时间变长,GC操作恢复后,写入放大又会慢慢增加回来。许多软件使用ATA安全擦除指令来重置磁盘,最著名的为HDDErase。对SSD来说,重置就是(除了OP区域内的部分私有区域外的)全盘擦除操作(逻辑1),瞬间即可完成清除所有数据让SSD回到初始状态。但要注意,每操作一次,全盘寿命P/E次数减1。
  • 6. 持续写入(Sequential writes)减少写入放大,好。理论上来说,持续写入的写入放大为1,但是某些因素还是会影响这个数值。
  • 7. 静态/动态数据分离(Separating Static and Dynamic Data)减少写入放大,好。高端SSD主控制器支持静态和动态数据的分离处理,此操作要求SSD主控制器对LBA里经常写入(动态数据,热数据)和不经常写入(静态数据,冷数据)的数据块进行归类,因为如果块里同时包含了静态和动态数据,在做GC操作的时候会为了改写其实没必要的静态数据而增加写入放大,所以把包含静态数据的块归类后,因为不常改写,写入放大就减少了。但是迟早SSD主控会把这些静态的数据转移到别的地方来进行磨损平衡。(因为静态数据占着的数据块一直不改写,编程次数低于平均值的话,会造成颗粒磨损不平衡,违背了磨损平衡,确实非常矛盾的。)
  • 8. 随机写入(Random writes)提高写入放大,不好。随机写入会写入很多非连续的LBA,将会大大提升写入放大。
  • 9. 磨损平衡(WL)直接提高写入放大,不好。确保闪存的每个块被写入的次数相等的一种机制。(详见WL章节)
  • 原创粉丝点击