消除企业级SSD写抖动的利器:擦写暂停技术

Erase/Program Suspension是1y以及3D Flash提供的一个新的命令接口。该命令可以在Erase/Program操作过程中将其暂停,然后执行其他的操作,并在某个时间重启之前暂停的操作。这篇文章将简述这种Suspension操作对SSD性能改善所起到的作用。

Erase/Program操作对SSD 读性能的影响

和客户级别的SSD不同,企业级的SSD除了顺序读顺序写带宽,随机读随机写的IOPS等指标之外,还有一些稳定性的指标。其中一项重要指标就是IO响应时延的稳定性,或一致性,英文为Latency Consistency。该指标反映IO随测试时间的一个延迟分布情况,分布集中说明稳定性好,IO延迟抖动小;分布离散,说明稳定性差,IO延迟抖动大。IO延迟的抖动,和SSD中IO调度算法有密切的关系。复杂的企业应用,不再是简单读写,大部分都是比较复杂的持续混合IO。持续的写入,势必导致SSD内GC的发生,形成数据搬移,落实到Flash具体操作就是Read/Program/Erase操作。然而当这些SSD内部GC产生的对Flash的Read/Program/Erase操作,和主机Host的IO产生冲突的时候,就会对IO的延迟产生不确定性,导致返回的IO延迟抖动。

GC对于写延迟的抖动,这个是个间接的过程。累积到磁盘写缓冲(DRAM或SRAM)的数据在写入Flash过程中会受到GC的Read/Program/Erase影响。SSD写缓冲如果不能完全吸收这种抖动造成的影响,就会将这种抖动传递到主机Host处,而表现为主机写IO的抖动。图1来自网络。我们知道4k QD1的性能对Latency非常敏感,图1展示了持续写由于GC引发抖动导致写延迟变化导致性能的波动。由于实现算法的差异,每个厂家表现是不一样的。这个也能简介反映厂家设计的功底和算法的优劣。

图1 SSD 4k DQ1 持续写入性能延迟表现(来自网络)

GC对于读延迟的抖动则更加明显。主机的读大部分都是从Flash直接读出。理想情况的读延迟为Flash读数据的延迟,这个指标对于Flash来说一般是tR,60-100us不等,加上Controller ECC解码时间以及数据搬运到主机内存的时间,一般来说这部分时间在10-20us。而当一个主机host读遇上一个主机的写导致的Flash的Program或GC的Read/Program/Erase在同样的Flash LUN上面发生冲突,情况就会变得比较糟糕。Flash Program/Erase数据的延迟tPROGt ERASE在ms级别,3D Flash这两项指标更为恶化,tPROG达到平均2-3ms,tERASE达到平均10ms。这将意味这host的这次读访问的延迟将达到ms甚至10ms以上。而平均效果看在这种测试下,读的一致性就表现出大的波动。

为了实际说明问题,这里举出一种场景描述企业应用中Erase/Program操作对实际业务造成的影响。在某种SSD上面以某种方式充分预制后,用以下模拟某种数据库测试的FIO脚本做比较轻量Queue Depth的IO读写混合操作。可见在长时间持续写入的情况,引发GC产生,对性能产生负面的影响。测试的Flash为某厂的3D Flash tPROG基本为2D Flash的1.5-2倍,而tERASE平均已经达到10ms。该3D Flash正常的tR为60-70us之间,而测试中SSD在各个场景下表现的平均Latency已经达到120-140us左右,最大的读Latency已经到10ms以上。这正是主机Host的读和主机写,以及GC的Read/Program/Erase,产生冲突后表现。不难理解主机Host的某个读,被挡在一个刚执行的GC Erase的后面,被Delay近10ms,所表现的比较差的最大读延迟。

某种SSD模拟数据库场景的测试效果

Erase/Program Suspension对企业应用的改善

1y以及3D Flash提供了一种称为Erase Suspension和Program Suspension的命令接口。其操作方法是,当Flash内部Array 正在进行Erase或Program操作时,用过这种命令,暂停当前的的Erase或Program操作。暂停成功后的Flash,状态回到Ready状态,可以进行读操作。而在某个时间,可以通过某些命令恢复之前被暂停的操作。

这种方式就为某些被已经下发的Erase或Program挡住的高优先级读,提供了超车的可能。避免了主机Host高优先级读被长时间Erase或Program挡,比较大程度的改善读的最大延迟,同时,平均读延迟也降获得改善。

在同样的SSD测试项目里面,引入这种技术,对比之前的测试用例,已经能观察到比较明显的改善效果。这里在SSD FW里面做了一些更加智能的控制,比如在Host IO压力一定的情况下使用Suspension技术;在高优先级IO被Erase/Program被挡的情况下,判断Erase/Program执行情况,评估当前Erase/Program执行如果完成度比较低则使用Suspension,让后续的高优先级读超车。

某种SSD模拟数据库场景应用Erase/Program Suspension后的测试效果

值得注意的是除了Erase/Program Suspension对企业性能的改善,另外对掉电也有很大的帮助。当前3D Flash的Erase时间都很长,在Dirty 掉电场景下,企业级SSD要求将Commit的写缓冲要刷入flash。tERASE的10ms对Dirty 掉电,是非常宝贵的时间,SSD电容一般设计也就能Cover数10ms。所以能够Suspend掉当前耗时的Erase,执行数据的紧急写入是很有必要的。

Erase/Program Suspension技术在SSD控制器应用的考虑

由以上分析Erase/Program Suspension技术的优势是显而易见的。然而Erase/Program Suspension技术操作上面SSD控制器也有一些点需要关注。

Erase/Program Suspension的控制层面在SSD的FW上控制比较困难。当FW下发NAND操作指令到硬件的Flash controller队列中,这个NAND操作指令基本就不受FW控制,其执行状态取决于当前的flash操作状态,以及Flash Controller的调度策略。FW层面很难决定什么时候需要发起或可以发起Erase/Program Suspension。这要求SSD Controller内部的FlashController做更加精细以及智能的控制,例如硬件的Flash Controller需要感知到当前将要执行IO的优先级别,并对正在执行的Erase/program估计完成时间,判断是否值得做Suspension操作。

对于Erase Suspension来说可能增加Cell的PE cycles,这点也是需要考虑的。FW在系统层面需要决定哪些IO遇到Erase/Program挡住的时候,适合执行Suspension,除了根据IO优先级,还要从系统层度预判Suspension的收益。包括当前GC强度,主机Host IO压力强度。比如当大压力的混合读写,GC强度也非常大,频繁的Suspension,也许并不适合,大压力下Suspension对读IO的延迟提升有限,频繁的Suspension可能会过快消耗Cell寿命。Suspension和之后的恢复操作,需要增加FW复杂度,消耗CPU计算时间,而且可能使GC执行不顺畅,对业务造成负面影响。整体上看很可能没有获得所期望的优化效果,反而增大IO的抖动和延迟。

Erase/Program Suspension是Flash厂商应企业级客户需求开放的一种有效改善IO延迟的新命令接口,能在一定程度上缓解3D Flash由于tPROG/tERASE增加而导致的问题。目前市面上已经有一些企业SSD产品声称对Erase/Program Suspension的支持。SSD Controller要用好Erase/Program Suspension,需要HW以及FW,从SSD系统上面做全面的考量。能利用好这项技术,带来SSD产品对实际应用的改善,也需要厂商做比较深入研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/262003.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Win系统安装MYSQL5.6安装版和5.7解压版

选择设置类型 双击运行mysql-installer-community-5.6.21.1.msi,这里选择是自定义安装,所以直接选择“Custom”,点击“Next”到下一步: “Developer Default”是开发者默 “Server only”仅作为服务器安装 “Client only”仅作为…

SQL基础:查询的基本使用

上一节我们讲述了记录的基本操作,这一节我们来单独讲一下查询。 查询基本结构 首先我们来看下查询的基本结构 SELECTcolumn1,column2,... FROMtable_name [WHEREcondition] [GROUP BYcolumn1, column2, ...] [HAVINGaggregate_function(column) condition] [ORDE…

存在重复元素

题目链接 存在重复元素 题目描述 注意点 无 解答思路 根据Set无法存储相同元素的特点判断nums中是否存在重复元素 代码 class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if …

ADS学习笔记(二)——更新中

八、中途容性负载的时延累加 1.原理简述 中途容性负载产生的第一位影响就是下冲噪声&#xff0c;第二位影响是远端信号的接收时间被延迟。电容器与传输线的组合就像一个RC滤波器&#xff0c;所以传输信号10&#xff05;&#xff5e;90&#xff05;上升边将增加&#xff0c;信…

爬虫入门--爬取电影TOP250-附源码解析

爬取电影TOP250 1 知识小课堂1.1 什么是爬虫1.2 爬虫能做什么 2 代码解析2.1 运行环境2.2 过程解析2.2.1 第一步&#xff1a;引入两个模块2.2.2 找到网址2.2.3 拉去页面全内容 2.2.42.3 完整代码 1 知识小课堂 1.1 什么是爬虫 爬虫&#xff0c;也叫网络蜘蛛&#xff0c;如果把…

Python---端口和端口号的介绍

1. 问题思考 不同电脑上的飞秋之间进行数据通信&#xff0c;它是如何保证把数据给飞秋而不是给其它软件呢? 其实&#xff0c;每运行一个网络程序都会有一个端口&#xff0c;想要给对应的程序发送数据&#xff0c;找到对应的端口即可。 端口效果图: 2. 什么是端口 端口是传…

HarmonyOS自学-Day2(ArkTS生命周期)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;生命周期组件生命周期谁可以调用组件生命周期&#xff1f;组件生命周期有哪些&#xff1f; 页面生命周期谁可以调用页面生命周期&#xff1f;页面生命周期有哪些&#xff1f; 生命周期执行顺序&#xff08;非常重要&…

Jackson 注解及配置大全

Jackson JSON 框架中包含了大量的注解来让我们可以干预 Jackson 的 JSON 处理过程&#xff0c; 例如我们可以通过注解指定 java pojo 的某些属性在生成 json 时被忽略。。本文主要介绍如何使用 Jackson 提供的注解。 Jackson注解主要分成三类&#xff0c;一是只在序列化时生效的…

腾讯云服务器上传文件 :Permission denied (os error 13) ,由于权限无法上传

根据网上的修改云服务器上传文件目录的权限&#xff0c;或是用root权限上传本地文件&#xff0c;均失败。 正解办法&#xff1a; ubuntu:/home/wwwroot# sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully首先修…

【lesson21】MySQL复合查询(2)子查询

文章目录 子查询测试要用到的表测试要用到的数据单行子查询案例 多行子查询案例 多列子查询案例 在from子句中使用子查询案例 合并查询union案例union all案例 子查询 子查询是指嵌入在其他sql语句中的select语句&#xff0c;也叫嵌套查询 测试要用到的表 测试要用到的数据 单…

变量覆盖漏洞 [BJDCTF2020]Mark loves cat 1

打开题目 我们拿dirsearch扫描一下看看 扫描得到 看见有git字眼&#xff0c;那我们就访问 用githack去扒一下源代码看看 可以看到确实有flag.php结合index.php存在 但是当我去翻源代码的时候却没有翻到 去网上找到了这道题目的源代码 <?phpinclude flag.php;$yds &qu…

第二十二章 : Spring Boot 集成定时任务(一)

第二十二章 &#xff1a; Spring Boot 集成定时任务&#xff08;一&#xff09; 前言 本章知识点&#xff1a; 介绍使用Spring Boot内置的Scheduled注解来实现定时任务-单线程和多线程&#xff1b;以及介绍Quartz定时任务调度框架&#xff1a;简单定时调度器&#xff08;Simp…

【EI会议征稿通知】2024年计算机与多媒体技术国际学术会议(ICCMT 2024)

2024年计算机与多媒体技术国际学术会议&#xff08;ICCMT 2024&#xff09; 2024 International Conference on Computer and Multimedia Technology (ICCMT 2024) 2024年计算机与多媒体技术国际学术会议&#xff08;ICCMT2024&#xff09;将于3月1日-3日在福建三明举办。会议…

Atium Designer 23 全新功能-丝印制备,解决DFM问题

进行PCB设计时需要养成良好的设计习惯&#xff0c;才能保证后期的生产效果。例如整板上需要保证丝印跟阻焊的间距规则避免产生丝印重叠造成的PCB制造设计&#xff08;DFM&#xff09;问题。丝印重叠阻焊的影响有如下&#xff1a; 1&#xff09;PCB板后期打样&#xff0c;一般是…

基础题总结(三)

一.0的个数 代码如下 二.序列求和

解决苹果应用商城审核拒绝的Guideline 2.5.4 - Performance - Software Requirements问题

当您的应用程序在苹果应用商城审核过程中被拒绝时&#xff0c;苹果会向您发送一封邮件&#xff0c;其中提供了关于拒绝原因的详细信息。本文将深入探讨如何正确处理Guideline 2.5.4 - Performance - Software Requirements问题&#xff0c;并提供解决方案&#xff0c;以确保您的…

gitee的学习

1.git下载 下载地址&#xff1a;https://git-scm.com/ 2.建立远程仓库 访问&#xff1a;gitee.com 在此网站上创建 3.本地操作 在本地找一个任意文件&#xff0c;克隆git 执行命令&#xff1a;git clone https://gitee.com/beijing-jiaxin-times_0/test_zsx_cang_ku.git …

tcp vegas 为什么好

我吹捧 bbr 时曾论证过它在和 buffer 拧巴的时候表现如何优秀&#xff0c;但这一次说 vegas 时&#xff0c;我说的是从拥塞控制这个问题本身看来&#xff0c;vegas 为什么好&#xff0c;并且正确。 接着昨天 tcp vegas 鉴赏 继续扯。 假设一群共享带宽的流量中有流量退出或有…

版本控制器git

1、下载 官网下载地址&#xff1a;https://git-scm.com/download 如果觉得官网下载慢的话&#xff0c;可以考虑某些应用市场&#xff0c;比如腾讯的 2、安装 安装就没什么可说的了&#xff0c;一直下一步就行了。 安装完毕后&#xff0c;回到桌面右键&#xff0c;如果出现这…

GLTF vs FBX:应该使用哪种格式?

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 概括地说&#xff0c;如果要将数据传输到 Unity 或虚幻引擎等游戏引擎…