SSD Wear Leveling磨损均衡,并不是一直有效,甚至有负面作用!--part2

2023-12-13 10:36

本文主要是介绍SSD Wear Leveling磨损均衡,并不是一直有效,甚至有负面作用!--part2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为了测试不同WL算法的性能影响,论文中在随机写压力下设定了两个参数:r,写IO比例;h,热数据比例。后续的测试基本采用的r/h=0.9/0.1的IO负载。

图片

在这种工作负载压力下,PWL算法的在80遍写盘后的写放大增加了11.49,这个写放大已经非常严重了。

图片

上图,根据CDF(Cumulative Distribution Function,即累积分布函数)曲线来看,在不同的工作负载(r/h=0.9/0.1 vs r/h=0.5/0.5)情况下,WL不同的算法效果相差很大,同时也有可能带来负面的效果,加速了寿命消耗!

图片

上图,减少了数据占用空间,再结合前两张图的对比,发现上面四种情况:只有数据访问相对均衡且占用空间较小时,WL磨损均衡算法才是有效的。其他场景磨损均衡效果不大,甚至可能产生负面影响

图片

最后,论文中提出了一种可变容量SSD的概念(类似ZNS SSD也可以通过zone来调整容量),可变容量是如何延长SSD的寿命的呢?

  • 首先,由于容量变化可以有效地提高存储效率,这就意味着在相同的物理存储空间内可以存储更多的数据。这样就可以减少SSD的写入次数和擦除次数,从而延长其寿命。

  • 其次,容量变化还可以平衡SSD内部各个区块的磨损程度。由于不同区块的存储空间是动态调整的,那些经常被写入的区块可以得到更多的存储空间,从而延长其寿命。

为了验证效果,论文设计了8个SSD模拟器,分别在9种workload负载种进行实际测量:

(1)8个SSD模拟器

图片

(2)9种workload负载

图片

实验数据表明:

  • 可变容量SSD相比容量固定的SSD,寿命平均提升86%,最大提升了2.94倍。 

  • 可变容量SSD的场景下,WL反而起了负面作用,没有WL磨损均衡算法效果更好,写放大更低。

图片

论文解读后评

  • 该论文作者,看到了目前WL磨损均衡的一些弊端,并提出一些思路,可变容量这个想法,实施过程还需要上层文件系统的配合(比如,逻辑空间的重新映射),这个实施难度个人觉得还是挺大的。

  • 论文至少提醒大家一个观点WL磨损均衡,并不是所有场景都是有效的,还有可能出现负面影响。SSD从业者在设计WL磨损均衡算法时,也需要进行通盘考虑,给出最优方案。

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 大容量疯了!居然想把磁带放到硬盘,100TB+是否可以实现?

  • NAND Vpass对读干扰和IO性能有什么影响?

  • HDD与QLC SSD深度对比:功耗与存储密度的终极较量

  • 小米14魔改存储芯片多出8GB空间背后的秘诀

  • SSD IO性能优化是一项复杂但很有趣的工程

  • 双11即将来临,挑选SSD硬盘最全避坑指南

  • 性能领域:你知道的越多,不知道的也就越多

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 如何通过优化Read-Retry机制降低SSD读延迟?

  • 关于硬盘质量大数据分析的思考

  • 存储系统性能优化中IOMMU的作用是什么?

  • 全景解析SSD IO QoS性能优化

  • NVMe IO数据传输如何选择PRP or SGL?

  • 浅析nvme原子写的应用场景

  • 多维度深入剖析QLC SSD硬件延迟的来源

  • 浅析PCIe链路LTSSM状态机

  • 浅析Relaxed Ordering对PCIe系统稳定性的影响

  • 实战篇|浅析MPS对PCIe系统稳定性的影响

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

这篇关于SSD Wear Leveling磨损均衡,并不是一直有效,甚至有负面作用!--part2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488134

相关文章

SpringBoot 中 CommandLineRunner的作用示例详解

《SpringBoot中CommandLineRunner的作用示例详解》SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的... 目录1、CommandLineRunnerSpringBoot中CommandLineRunner的作用

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

Kali Linux安装实现教程(亲测有效)

《KaliLinux安装实现教程(亲测有效)》:本文主要介绍KaliLinux安装实现教程(亲测有效),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载二、安装总结一、下载1、点http://www.chinasem.cn击链接 Get Kali | Kal

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

$在R语言中的作用示例小结

《$在R语言中的作用示例小结》在R语言中,$是一个非常重要的操作符,主要用于访问对象的成员或组件,它的用途非常广泛,不仅限于数据框(dataframe),还可以用于列表(list)、环境(enviro... 目录1. 访问数据框(data frame)中的列2. 访问列表(list)中的元素3. 访问jav

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、