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

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

3天内不再提示

NVMe SSD性能影响因素分析

架构师技术联盟 来源:架构师技术联盟 2023-11-13 11:39 次阅读

NVMe SSD 厂商Spec给出的性能非常完美,前面也给出了NVMe SSD和磁盘之间的性能对比,NVMe SSD的性能的确比磁盘高很多。

但在实际应用过程中,NVMe SSD的性能可能没有想象中的那么好,并且看上去不是特别的稳定,找不到完美的规律。和磁盘介质相比,SSD的性能和很多因素相关,分析SSD的性能影响因素,首先需要大体了解SSD构成的主要部分。

如下图所示,其主要包括主机CPU、PCIe互连带宽、SSD控制器及FTL软件、后端NAND Flash带宽、NAND Flash介质。影响SSD性能的主要因素可以分成硬件、软件和客观环境三大部分,具体分析如下。

wKgZomVRmn-AfU6dAACdsObpUWw092.png

1, 硬件因素

a) NAND Flash本身。不同类型的NAND Flash本身具有不同的性能,例如SLC的性能高于MLC,MLC的性能优于TLC。选择不同的工艺、不同类别的NAND Flash,都会具有不同的性能。

b) 后端通道数(CE数量)及总线频率。后端通道数决定了并发NAND Flash的数量,决定了并发能力。不同的SSD控制器支持不同数量的通道数,也决定了SSD的后端吞吐带宽能力。NAND Flash Channel的总线频率也决定了访问Flash的性能。

c) SSD控制器的处理能力。SSD控制器中会运行复杂的FTL(Flash Translation Layer)处理逻辑,将逻辑块读写映射转换成NAND Flash 读写请求。在大数据块读写时,对处理器能力要求不是很高;在小数据块读写时,对处理器能力要求极高,处理器能力很容易成为整个IO系统的性能瓶颈点。

d) SSD控制器架构。通常SSD控制器采用SMP或者MPP两种架构,早期的控制器通常采用MPP架构,多个小处理器通过内部高速总线进行互连,通过硬件消息队列进行通信。内存资源作为独立的外设供所有的处理器进行共享。这种架构和基于消息通信的分布式系统类似。MPP架构的很大优势在于性能,但是编程复杂度较高;SMP架构的性能可扩展性取决于软件,编程简单,和在x86平台上编程相似。不同的控制器架构会影响到SSD的总体性能,在SSD设计时,会根据设计目标,选择不同类型的SSD控制器。

e) 内存支持容量。为了追求高性能,SSD内部的映射资源表会常驻内存,映射表的内存占用大小是盘容量的0.1%,当内存容量不够大时,会出现映射表换入换出的问题,影响到性能。

f) PCIe的吞吐带宽能力。PCIe前端带宽体现了SSD的前端吞吐能力,目前NVMe SSD采用x4 lane的接入方式,上限带宽为3GB/s,当后端NAND Flash带宽和处理器能力足够时,前端PCIe往往会成为性能瓶颈点。NANDFlash具有很高的读性能,目前来看,SSD的读性能在很大程度上受限于PCIe总线,因此需要快速推进PCIe4.0标准。

g) 温度对性能造成影响。在NAND Flash全速运行的情况下,会产生较大的散热功耗,当温度高到一定程度时,系统将会处于不正常的工作状态,为此,SSD内部做了控温系统,通过温度检测系统来调整SSD性能,从而保证系统温度维持在阈值之内。调整温度会牺牲性能,本质上就是通过降低SSD性能来降温。因此,当环境温度过高时,会影响到SSD的性能,触发SSD内部的温度控制系统,调节SSD的性能。

h) 使用寿命对性能造成影响。NAND Flash在不断擦除使用时,Flash的bit error会不断上升,错误率的提升会影响到SSD的IO性能。

2, 软件因素

a) 数据布局方式。数据布局方法需要充分考虑NAND Flash中的并发单元,如何将IO操作转换成NAND Flash的并发操作,这是数据布局需要考虑的问题。例如,采用数据交错的方式在多通道page上进行数据布局,通过这种方式可以优化顺序带宽。

b) 垃圾回收/wear leveling调度方法。数据回收、wear leveling、data retention等操作会产生大量的NANDFlash后端流量,后端流量直接反应了SSD的写放大系数,也直接体现在后端带宽的占用。垃圾回收等产生的流量也可以称之为背景流量,背景流量会直接影响到前端用户性能。因此需要对背景流量和用户流量之间进行合理调度,使得用户IO性能达到最佳。

c) OP预留。为了解决坏块、垃圾回收等问题,在SSD内部预留了一部分空闲资源,这些资源被称之为OP(Overprovisioning)。OP越大,GC过程中平均搬移的数据会越少,背景流量会越小,因此,写放大降低,用户IO性能提升。反之,OP越小,性能会越低,写放大会越大。在SSD容量较小的时代,为了提升SSD的使用寿命,往往OP都设置地比较大。

d) Bit error处理影响性能。在SSD内部采用多种机制来处理NAND Flash所产生的Bit error。ECC纠错、readretry、soft LDPC以及RAIN都是用来纠正bit翻转导致的错误。当Bit错误率增加时,软件处理的开销越大,在bit控制在一定范围之内,完全可以通过硬件进行纠正。一旦软件参与到bit纠正的时候,会引入较大的性能开销。

e) FTL算法。FTL算法会影响到SSD性能,对于不同用途的SSD,FTL的设计与实现是完全不同的,企业级SSD为了追求高性能,通常采用Flat mapping的方式,采用大内存缓存映射表;消费级SSD为了追求低成本,通常采用元数据换入换出的方式,并且采用pSLC+TLC的组合方式进行分层存储,也可以采用主机端内存缓存元数据信息,但是这些方式都会影响到性能。

f) IO调度算法。NAND Flash具有严重的性能不对称性,Flash Erase和Program具有ms级延迟,Flash read的延迟在us级。因此,如何调度Erase、Program以及read是SSD后端设计需要考虑的问题。另外,前端IO以及背景IO之间的调度也是需要权衡考虑,通过IO调度可以达到最佳性能表现。在IO调度过程中,还需要利用NANDFlash的特性,例如Program Suspension,通过这些特性的利用,最优化SSD前端IO性能。

g) 驱动软件。驱动软件运行在主机端,通常分为内核态和用户态两大类,内核态驱动会消耗较多的CPU资源,存在频繁上下文切换、中断处理,因此性能较低;用户态驱动通常采用Polling IO处理模式,去除了上下文切换,可以充分提升CPU效率,提升整体IO性能。

h) IO Pattern对性能产生影响。IO Pattern影响了SSD内部的GC数据布局,间接影响了GC过程中的数据搬移量,决定了后端流量。当IO Pattern为全顺序时,这种Pattern对SSD内部GC是最为友好的,写放大接近于1,因此具有最好的性能;当IO Pattern为小块随机时,会产生较多的GC搬移数据量,因此性能大为下降。在实际应用中,需要通过本地文件系统最优化IO Pattern,获取最佳性能。

3, 客观因素

a) 使用时间越长会导致SSD性能变差。使用时间变长之后,SSD内部NAND Flash的磨损会加重,NAND Flash磨损变大之后会导致bit错误率提升。在SSD内部存在一套完整的bit错误恢复机制,由硬件和软件两大部分构成。当bit错误率达到一定程度之后,硬件机制将会失效。硬件机制失效之后,需要通过软件(Firmware)的方式恢复翻转的bit,软件恢复将会带来较大的延迟开销,因此会影响到SSD对外表现的性能。在有些情况下,如果一块SSD在掉电情况下放置一段时间之后,也可能会导致性能变差,原因在于SSD内部NAND Flash中存储电荷的漏电,放置一段时间之后导致bit错误率增加,从而影响性能。SSD的性能和时间相关,本质上还是与NAND Flash的比特错误率相关。

b) 环境温度也会对性能造成影响。为了控制SSD温度不能超过上限值,在SSD内部设计有一套温度负反馈机制,该机制通过检测的温度对NAND Flash后端带宽进行控制,达到降低温度的效果。如果一旦温度负反馈机制开始工作,那么NAND Flash后端带宽将会受到限制,从而影响前端应用IO的性能。下面从软件的角度出发,重点阐述GC以及IO Pattern对SSD性能的影响。

3.1 GC对性能的影响

SSD内部有一个非常厚重的软件层,该软件层用来解决NAND Flash的问题,采用log-structured的方式记录数据。Log-structured方式引入了GC的问题,对于前端业务来讲,GC流量就是背景噪声。GC流量不是时时刻刻存在的,因此,SSD对外体现性能大幅度波动。当SSD为空盘时,性能会非常好,为最佳性能;当SSD被用过一段时间之后,性能会大幅降低。其中GC起到了很重要的作用。企业级SSD在发布Spec的时候,都会发布SSD盘的稳态性能。在性能测试的时候,需要对盘进行老化预处理。通常预处理的方法是顺序写满盘,然后再随机两遍写盘,预处理完成之后,再对盘进行随机读写测试,得到Spec中定义的值。稳态值基本可以认为是盘的下限性能。

wKgZomVRmn-AQUFnAAHcBg7lVys474.png

上图所示是多个厂商的盘在空盘和稳态情况下的性能对比,由此可见稳态情况和空盘情况下的性能差距很大。在稳态情况下,SSD内部的GC会全速运行,会占用较多的NAND Flash后端带宽。背景流量和前端数据流的比例也就体现了SSD盘的写放大系数,写放大系数越大,背景流量占用带宽越多,SSD对外体现的前端性能也就越差。写放大系数很多因素相关,例如OP、应用IO Pattern等。如果应用IO Pattern比较好,那么可以降低写放大系数,背景噪声流就会减少,前端业务的性能会提升。例如,在SSD完全顺序写入的情况下,写放大系数可以接近于1,此时GC产生的数据流很少,背景流量基本没有,后端带宽基本被业务数据流占用,因此对外体现的性能会很好。

GC是影响性能的重要因素,除了影响性能之外,GC会增大写放大,对SSD的使用寿命产生影响。从软件层面的角度考虑,可以通过优化应用IO Pattern的方式优化SSD内部GC,从而进一步提升SSD的性能,优化使用寿命。对于下一代更为廉价的QLC SSD介质,就需要采用这种优化思路,否则无法很好地满足实际业务的应用需求。

审核编辑:汤梓红

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

    关注

    10

    文章

    1635

    浏览量

    148058
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10868

    浏览量

    211841
  • SSD
    SSD
    +关注

    关注

    21

    文章

    2863

    浏览量

    117447
  • 磁盘
    +关注

    关注

    1

    文章

    379

    浏览量

    25209
  • nvme
    +关注

    关注

    0

    文章

    221

    浏览量

    22647

原文标题:NVMe SSD性能影响因素一探究竟(上)

文章出处:【微信号:架构师技术联盟,微信公众号:架构师技术联盟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    NVMe SSD性能影响因素一探究竟(下)

    IO Pattern会对SSD性能产生严重影响,主要表现在如下几个方面
    的头像 发表于 12-09 11:38 1563次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>SSD</b><b class='flag-5'>性能</b>影响<b class='flag-5'>因素</b>一探究竟(下)

    Xilinx FPGA NVMe Host Controller IP,NVMe主机控制器

    ,从而可实现更高存储性能和存储容量。 无需CPU,NVMe Host Controller IP自动执行对PCIe SSD的PCIe设备枚举和配置、NVMe控制器识别和初始化、
    发表于 02-21 10:16

    Xilinx FPGA NVMe主机控制器IP,高性能版本介绍应用

    ,从而可实现更高存储性能和存储容量。无需CPU,NVMe Host Controller IP自动执行对PCIe SSD的PCIe设备枚举和配置、NVMe控制器识别和初始化、
    发表于 03-09 13:56

    Xilinx FPGA高性能NVMe SSD主机控制器,NVMe Host Controller IP

    ,从而可实现更高存储性能和存储容量。无需CPU,NVMe Host Controller IP自动执行对PCIe SSD的PCIe设备枚举和配置、NVMe控制器识别和初始化、
    发表于 03-27 17:23

    性能NVMe主机控制器,Xilinx FPGA NVMe Host Accelerator IP

    ,从而可实现更高存储性能和存储容量。无需CPU,NVMe Host Controller IP自动执行对PCIe SSD的PCIe设备枚举和配置、NVMe控制器识别和初始化、
    发表于 04-10 22:55

    性能NVMe主机控制器,Xilinx FPGA PCIe 3

    ,从而可实现更高存储性能和存储容量。无需CPU,NVMe Host Controller IP自动执行对PCIe SSD的PCIe设备枚举和配置、NVMe控制器识别和初始化、
    发表于 04-20 14:41

    NVMe P4600的速度部分低于SATA SSD

    ,三星SATA SSD如何能够胜过英特尔NVMe SSD(读取速度)?P4600使用最新的固件(使用当前的数据中心工具)进行更新,并使用最新的英特尔驱动程序运行(Windows驱动程序甚至更慢!)这是正常
    发表于 11-28 14:57

    在Xilinx ZCU102评估套件上启用NVMe SSD接口

    无线网络,下一代高级驾驶员辅助系统(ADAS)和工业物联网(IIoT)解决方案。无论如何,对于需要高性能和高可靠性的外部数据存储的应用程序(例如NVMe SSD驱动器),需要利用GTH收发器
    发表于 09-03 16:07

    如何为工业应用设计NVMe SSD

    RK3399核心板有哪些应用?如何为工业应用设计NVMe SSD呢?
    发表于 03-07 06:12

    西部数据推出新款高性能NVMe SSD

    2018年5月22日—西部数据推出新款高性能NVMe SSD,Western Digital Black 3D NVMe SSD。这款固态硬
    发表于 05-24 18:12 1773次阅读

    NVMe SSD与SATA SSD性能对比

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

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

    NVMe SSD性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD
    的头像 发表于 11-05 09:47 8941次阅读

    Flashtec系列的最新成员 Flashtec NVMe 3108 PCIe Gen 4企业NVMe SSD控制器

    Microchip的新Flashtec NVMe 3108 PCIe Gen 4 NVMe SSD控制器可提供各种紧凑型SSD外形尺寸,并具有业界领先的安全功能,并具有高效能,出色的
    的头像 发表于 09-11 13:43 2745次阅读

    重新定义NVMe SSD外形

    NVMe NVM Express(NVMeSSD在企业和数据中心应用中的部署大量涌现,但同时出现的一些复杂状况让这些部署无法发挥出全部优势。今天的文章我们就来说说NVMe
    的头像 发表于 09-23 14:26 2790次阅读
    重新定义<b class='flag-5'>NVMe</b> <b class='flag-5'>SSD</b>外形

    浪潮NVMe SSD性能

    本次测试采用浪潮服务器 SA5112M6,磁盘采用三个节点每个节点八块浪潮 INSPUR-NS8610G1U320 NVMe进行测试,此次采用的NVMe SSD具有极高的性能,产品4K
    发表于 08-03 10:25 2053次阅读