SSD 之WA写入放大
来源:互联网 发布:删除数据库主键约束 编辑:程序博客网 时间:2024/05/01 21:30
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)--- 虽然增加了写入放大,但是速度有提升。 这个比较特殊的算法用来移动,合并,擦除闪存块来提升效率。
2、预留空间(OP)--- 减少写入放大,好。(预留空间越大,写入放大越低) 在SSD上划出部分空间留给主控做优化,是用户不能操作的空间。
3、Trim 开启后可以减少写入放大,好。 一个ATA指令,由操作系统发送给SSD主控,告诉主控哪些数据是无效的并且可以不用做垃圾回收操作。
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,将会大大提升写入放大。
举个最简单的例子:当要写入一个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)--- 虽然增加了写入放大,但是速度有提升。 这个比较特殊的算法用来移动,合并,擦除闪存块来提升效率。
2、预留空间(OP)--- 减少写入放大,好。(预留空间越大,写入放大越低) 在SSD上划出部分空间留给主控做优化,是用户不能操作的空间。
3、Trim 开启后可以减少写入放大,好。 一个ATA指令,由操作系统发送给SSD主控,告诉主控哪些数据是无效的并且可以不用做垃圾回收操作。
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)直接提高写入放大,不好 确保闪存的每个块被写入的次数相等的一种机制。
转载地址:http://www.liangchanba.com/article-844-1.html
0 0
- SSD 之WA写入放大
- SSD 之WA写入放大
- SSD 之写入放大带来的难题
- 关于SSD写入放大问题
- WA(Write Amplification)写入放大
- WA(Write Amplification)写入放大
- 每天进步一点点——关于SSD写入放大问题
- SSD的写入放大技术是什么-Write amplification
- SSD的工作原理、GC和TRIM、写入放大以及性能评测
- 老哥稳,如何优雅的解决SSD的写入放大问题
- ssd的写放大
- WA恶之源
- wa
- WA~~~~~~~
- WA
- wa
- WA
- WA
- imx6sx.dtsi cpu等最小系统的设备树源码 arch/arm/boot/dts/imx6sx.dtsi
- 封装好的友盟分享--默认的样式与自定义的样式
- 关联规则apriori算法的python实现
- Android jni包裹文件(jni wrapper)
- jQuery函数attr()和prop()的区别
- SSD 之WA写入放大
- 下载文件的基本原理
- Android中自定义Dialog
- 排序:插入排序/选择排序/交换排序(冒泡法)
- 如何查看应用运行时虚拟机内存使用情况
- 安卓硬件编解码
- 学习笔记:粒度设计 粗粒度与细粒度 (-)
- 计算几何相关知识和算法概论
- Linux网络编程——tcp并发服务器(I/O复用之select)