0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

SSDFans 来源:lq 2019-01-21 17:03 次阅读

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,所表现的比较差的最大读延迟。

表1某种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,让后续的高优先级读超车。

表2某种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产品对实际应用的改善,也需要厂商做比较深入研究。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16191

    浏览量

    177369
  • SSD
    SSD
    +关注

    关注

    20

    文章

    2851

    浏览量

    117214
  • 数据库
    +关注

    关注

    7

    文章

    3761

    浏览量

    64272

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

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    极致优化SSD并行调度

    提升广告检索漏斗一致性,要求在粗排阶段引入更丰富的信号,这些信号的需求量已经远远超出了内存的承受能力。为此,我们考虑引入基于NVMe SSD的分层存储。本文详细探讨了一种长尾可控的方法论,以及在这
    的头像 发表于 09-18 09:20 1072次阅读
    极致优化<b class='flag-5'>SSD</b>并行<b class='flag-5'>读</b>调度

    NVMe SSD性能影响因素分析

    NVMe SSD 厂商Spec给出的性能非常完美,前面也给出了NVMe SSD和磁盘之间的性能对比,NVMe SSD
    的头像 发表于 11-13 11:39 1082次阅读
    NVMe <b class='flag-5'>SSD</b><b class='flag-5'>性能</b>影响因素分析

    SSD是什么意思,什么是SSD

    、SONY等一大批国外实力厂家的不断开发研究,SSD市场已经全面开花了。不过不要担心,中国第一款SSD已经由深圳亿正存储科技公司于2007年1月1日宣布研发完成,并可以大批量进行生产,而且与写速度均大于
    发表于 03-25 16:20

    这些ssd的页面大小和块擦除大小是?

    and which size in recomded? Does anyone know the page size and the block erase size of those ssd's? TanksDirk
    发表于 11-15 11:03

    工具箱3.4.3和intel ssd 520 120bg安全擦除不起作用

    以下为原文Hello!I have new NVMe ssd 760p and "old" 520ssd need to be "secure erase
    发表于 11-26 14:16

    S32K312编程但是Erase and Program总是不成功怎么解决?

    我们是第三方编程器厂商,目前开发S32K312编程软件。我们参考文件S32K3 Memories Guide,Erase and Program操作过程,但是Erase and
    发表于 03-14 13:36

    电池管理器件的/写操作

    电池管理器件的/写操作 Dallas Semiconductor 的电池管理IC 采用相同的通信协议和相同的存储器地址不同类型的存储器可以分别进行/写操作本应用笔记阐述了唯
    发表于 04-12 08:50 21次下载

    GD32-Colibri-F207实验板Erase_Progra

    GD32-Colibri-F207实验板Erase_Program,很好的GD32资料,快来学习吧。
    发表于 04-21 10:49 3次下载

    NVMe SSD与SATA SSD性能对比

    老说NVMe SSD性能是SATA SSD的四倍,那到底实际体验是怎样的呢?
    的头像 发表于 07-27 09:43 3.5w次阅读

    不同系统对SSD性能是否有影响

    大家都知道SSD固态硬盘的性能很好,但是你有没有想过,在不同的操作系统下,SSD性能表现会不会有明显的差异呢?毕竟不同系统对同样技术的支持
    的头像 发表于 09-04 11:49 3814次阅读

    影响SSD性能的因素有哪些 NVMe SSD性能解析

    NVMe SSD性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用
    的头像 发表于 11-05 09:47 8895次阅读

    FTL算法的好坏,直接决定了SSD性能

    每擦除一次闪存块,都会对闪存块有磨损,因此闪存块都是有寿命的,用PE(Program/Erase Count)数衡量。我们不能集中往某几个闪存块上写数据,不然这几个块很快就会因PE耗尽而死亡,这不是
    的头像 发表于 10-09 16:20 1w次阅读

    、写、擦除是SSD对NAND的三大基本操作

    通过一系列的介绍和实验验证,我们看到了TRIM的价值和实现原理。在TRIM的帮助下,NVMe SSD的GC等操作效率更高,进而达到降低写放大,提高产品性能和寿命的效果。
    的头像 发表于 04-28 11:39 1w次阅读

    如何FPGA内部的RAM进行改写操作

    存储器是FPGA设计中的常用单元,对存储器的操作,最基础的就是读写操作,还有一种就是改写操作,即先读出存储器中的数据,对其进行修改后,再写入存储器。这样的
    的头像 发表于 09-28 16:53 2385次阅读
    如何FPGA内部的RAM进行<b class='flag-5'>读</b>改写<b class='flag-5'>操作</b>

    SSD硬盘对系统性能的影响

    随着科技的不断进步,存储设备也在不断地更新换代。固态硬盘(SSD)作为一种新型的存储设备,相较于传统的机械硬盘(HDD),在性能上有着显著的提升。 1. 启动速度 SSD硬盘的启动速度远快于HDD
    的头像 发表于 11-23 09:36 77次阅读