NVMe SSD可以有多快?实测性能全分析

测试平台的选择和考虑

企事录实验室有多套服务器平台,最新的SkyLake处理器也有白金版8180/8176和黄金版6154/6146等四种,具体细节如下表:

企事录实验室中的四款当红的SkyLake处理器,不同的内核数量有不同的主频,TDP也不同

根据以往的经验来看,对于大多数的应用而言,在处理器都拥有一定数量内核基础上,提升主频所获得的性能提升,比增加内核所获得的性能提升要高出很多。部分原因在于,很多软件没有充分为多核优化,提升CPU主频能够直接给应用带来性能提升,而更多内核则通常需要操作系统乃至上层应用进行相关优化才能获得性能收益。因此,企事录实验室选择了Intel Xeon Gold 6146处理器作为测试平台,相比于其他三款CPU,其拥有最高的主频。

企事录实验室用于测试DC S4500与DC P4500/4600性能的Intel白牌服务器

企事录实验室将Xeon Gold 6146处理器安装在型号为S2600WF的Intel双插槽服务器主板上,配备256GB DDR4-2666内存,使用一片容量为400GB的Intel DC S3710 SSD作为启动盘,安装Oracle Linux 7.4操作系统,以及Oracle 12c数据库(包括Grid和Database)软件,分别使用Intel DC S4500、DC P4500以及DC P4600作为Oracle数据库的存储,以DC S4500的性能作为基准,比较NVMe SSD与SATA SSD的性能区别。

从上到下分别为Intel DC S4500、DC P4500(背面)和DC P4600。DC S4500采用2.5英寸7mm(毫米)厚度,相对DC P4500/4600的2.5英寸15mm厚度设计,显得轻薄很多

DC S4500采用6Gb/s SATA接口,是Intel传统SATA SSD产品的延续,主要面向读密集型应用场景,最近Intel又新增了DC S4600系列SSD,同等容量下,耐写等级是DC S4500的三倍,随机写IOPS翻了一倍,同样是SATA SSD的延续,但面向写密集型应用场景。

采用U.2接口的DC P4500/4600则是Intel新一代的NVMe SSD,包括最新的闪存控制器设计和3D NAND闪存颗粒,以及更新的NVMe 1.2规范支持。DC P4500主要面向读密集型场景,DC P4600面向中度写负载场景,所以DC P4600拥有更高的耐写等级,以及更好的随机写性能。

Intel DC S4500/4600与DC P4500/4600 SSD相关数据对比,数据来源于Intel官网,企事录实验室整理。延迟主要分为顺序延迟和随机延迟,业内通常将小尺寸数据(如4K)的随机读写延迟作为存储性能的衡量标准;Intel官网上所公布的DC P4500/4600为4K数据块的随机读写延迟,而DC S4500则是顺序读写延迟。为了统一比较,企事录实验室与Intel联系,获得了DC P4500/4600的顺序读写延迟,但DC S4500的随机读写延迟未能提供,不过这在后面的性能验证中可以获得

由于DC P4500/4600面向不同程度的读写应用场景,DC P4600的随机写性能更高,且耐写等级是DC P4500的5倍左右。其内部的NAND闪存颗粒和闪存控制器也有区别:

Intel DC P4500与DC P4600中的闪存颗粒,分别使用两种不同的3D NAND闪存颗粒

Intel DC P4500与4600中的闪存控制器和DRAM。闪存控制器看起来像是同一型号,均配备了两种类型的DRAM,猜测其中一颗DRAM可能主要用作写Buffer

Intel第四代SSD针对写I/O进行了优化,I/O写入闪存控制器中的写Buffer中即返回操作成功,间隔一定时间之后再统一刷到NAND存储中。SSD中配备的两颗电容可以保证SSD在突然掉电的情况下将DRAM中的数据写到NAND存储之中,以保证数据不丢失。这一机制带来的好处就是,写延迟比读延迟还低,如前文表中所示,DC P4500/4600的读延迟为82微秒,而写延迟仅为30微秒。

NVMe SSD性能验证性测试

企事录实验室使用FIO工具分别对DC S4500与DC P4500/4600的裸盘性能进行了验证。

企事录实验室分别使用两种尺寸——4K和8K的数据块来验证这三种SSD在不同队列深度下的性能表现。4K数据块的随机访问性能是业界用以衡量SSD随机性能的事实标准,8K数据块主要用以衡量其在数据库应用下的性能表现。

不同队列深度有着不同的性能表现,通常队列深度为1时有最好的延迟表现;随着队列深度的增加,其IOPS会随之增长,直到获得SSD的最大IOPS;在未达到SSD的最大IOPS时,随着队列深度的增加,其延迟增加通常并不剧烈;在达到最大IOPS后,随着队列深度的增加,其IOPS趋于稳定,但延迟通常会随队列深度的增加而线性增长。

由于新开箱SSD的缘故,测试结果存在一定的误差,成绩会偏好。如上图所示,DC S4500的4K随机读取IOPS超过了8.5万,略好于Intel官网公布的7.2万IOPS;同样,DC P4500和DC P4600的4K随机读取IOPS分别超过了54万和56万,高于官网公布的49万与55万,但误差并不明显。

在8K随机读取性能测试方面,DC S4500达到5.1万IOPS,DC P4500和DC P4600分别超过了32万和34万IOPS。同时,企事录实验室还收集了其在不同队列深度下的延迟表现情况,如下图所示:

从测试结果来看,DC S4500在队列深度为1时,其延迟为0.18ms(即180微秒),DC P4500/4600在队列深度为1时的延迟分别0.04ms和0.03ms,证明NVMe SSD(DC P4500/4600)的延迟确实比SATA SSD(DC S4500)好很多。同时也证明了Intel官网所公布的DC S4500的延迟数据(36微秒)为顺序读写时的延迟表现

同样,企事录实验室以相同的方法分别测试了DC S4500与DC P4500/4600在不同队列深度下的4K、8K随机写性能,上图为其IOPS增长情况,在队列深度为8时,达到最大IOPS,DC S4500达到3.9万IOPS,高于官网公布的3万IOPS;DC P4500达到了11万IOPS,远高于官网的3.8万IOPS,这可能跟开箱新盘测试有一定关系,虽然在正式测试之前,已用数天时间对SSD至少擦写了一遍,但测试成绩仍旧偏高;DC P4600则达到17.5万IOPS,与官网公布的成绩一致。

当队列深度为1时,DC S4500与DC P4500/4600的延迟均保持在0.04ms(即40微秒)左右,与Intel官网数据基本保持在同一水平。从2队列深度开始,随着队列的增加,延迟成倍增长

在带宽方面,NVMe SSD显然是有巨大优势的,U.2接口的NVMe SSD基本都采用PCIe 3.0 x4通道,理论带宽接近4GB/s,大块数据顺序读的实际带宽能达到3.2GiB/s左右;而SATA 3.0接口的理论带宽为6Gb/s,大块数据顺序读的实际带宽在550MiB/s左右,有近乎6倍的差距。下图为企事录实验室验证NVMe SSD(DC P4500/4600)与DC S4500的64K顺序读写带宽能力:

从测试结果来看,DC S4500的读写带宽接近500MB/s,距离SATA 3.0接口的实际带宽极限已经不远了。DC P4500/4600的顺序读带宽超过了3200MB/s,基本上到达了PCIe 3.0 x4通道的实际带宽极限;同时,DC P4500实测的顺序写带宽接近1100MB/s,与官网公布的1050MB/s基本一致;DC P4600的实测顺序写带宽则超过了1350MB/s,与其公布的1325 MB/s基本一致(5%以内的性能差距可理解为测试误差)

通过上述测试可以看出, DC S4500、DC P4500以及DCP4600的实际测试成绩基本与Intel官网提供的性能数据相符合,由于测试平台或者测试方法,乃至SSD的新旧程度不同,可能会导致测试成绩有一定的误差,但在较小范围内(通常5%为合理值),企事录实验室认为其是真实有效的。

但值得注意的是,这只是针对底层硬件(SSD)的性能测试,只能为基于之上的应用提供较为模糊的性能参考,如果要了解其在特定应用场景下的性能表现,通常需要在更高层级使用与之对应的工具(解决方案)进行测试。

针对数据库应用的存储性能测试

使用NVMe SSD以加速数据库应用性能是目前主流的应用场景,但如何衡量SSD在数据库应用中的性能表现并不容易,如Fio、IOmeter之类的测试工具只针对IO子系统(IO Subsystem),并不能真实反映其在数据库中所能发挥的性能。

根据以往的Oracle数据库测试经验,通过多种不同测试工具的对比,企事录实验室将这些工具按照作用层级大致分为3类:

IO子系统级测试工具:如Fio、IOmeter以及Orion等。这些工具都只是针对硬盘或者存储卷(Volume)进行性能测试,只能反映存储的性能,虽然可以灵活地调整测试数据尺寸乃至并发,但很难反映出其在具体应用场景下性能表现;

RDBMS级测试工具:如SLOB,其需要安装Oracle实例,并创建一个测试表空间,构建测试数据用以评估存储性能。相比于IO子系统测试工具,SLOB对IO的调用更为复杂,具有更好的参考价值,也能反映系统其它资源的性能表现,如CPU和内存。但仍不能更为客观地展现真实应用场景下的性能;

应用级测试工具:如HammerDB、Swingbench以及Simora等,其尽可能地构建一个贴近真实应用的数据库场景,用以评估实际环境中的数据库性能表现。而这也意味着其衡量的是包括计算、存储乃至网络(如Oracle RAC方案)等子系统在内的整体性能表现。利用这些工具来评估存储子系统的性能表现时,还需要考虑其他子系统的性能瓶颈。

企事录实验室在基于Intel Xeon Gold 6146处理器的双插槽服务器上构建Oracle单实例数据库系统,依次使用1/2/3/4片DC S4500和DC P4600作为其数据库存储,分别使用SLOB和Swingbench工具进行测试,对比DC S4500与DC P4600 SSD在Oracle数据库环境下的性能表现。

在SLOB测试中,分别使用1/2/3/4片DCS4500以及DC P4600 SSD作为实际数据存储,均写入128GB测试数据,对其进行随机读取性能测试,测试完毕后整理数据并进行对比,其结果如下:

在使用DC S4500 SSD作为Oracle数据库存储时,随着DC S4500 SSD数量逐一增加,其性能线性增长,在4片DC S4500 SSD全部用作Oracle数据库存储之后,其最大性能超过了11万Rds/s(Reads/s)

而使用DC P4600 SSD作为Oracle数据库存储之后,即使只使用1片DC P4600 SSD,其也获得了3倍于4片DC S4500 SSD的性能之和,是单片DC S4500 SSD性能的10倍;随着DC P4600 SSD的增加,其性能随之线性增长。但在同时使用3片DC P4600之后,其性能达到最大值——85万Rds/s,从性能增长曲线推测,3片DCP4600 SSD的性能并未完全发挥,还略有盈余,但由于其他子系统(如计算、操作系统)达到瓶颈,即使再加入第4片DC P4600 SSD,其性能仍保持平稳,并未有所增加。

利用Swingbench工具能够更加真实反映使用SSD作存储的Oracle数据库服务器的综合性能表现。企事录实验室使用了另外一台配备Intel XeonE5-2699 v4处理器的双插槽服务器作为压力客户端,其上安装Windows Server 2012 R2 Datacenter操作系统,以及Swingbench工具,用以测试Oracle数据库服务器(Intel Xeon Gold 6146处理器+DC S4500/DC P4600)性能,压力客户端与Oracle数据库服务器通过万兆以太网连接。

为了尽可能排除大内存容量带来的性能虚高影响,在创建测试数据库时,将SGA调整为32GB,每次均写入120GB测试数据,在启动测试后,至少稳定运行1小时后获得性能结果,经过整理,分别使用1/2/3/4片DC S4500与DC P4600 SSD作存储的Oracle数据库性能(TPM)如下图所示:

由于Swingbench属于应用层测试,其并不能单纯反应某一子系统的具体性能,而体现的是Oracle数据库服务器的综合性能。在逐一添加DC S4500 SSD做数据库存储时,其TPM性能基本能线性增长,在加入第3片SSD后,获得最大性能——160万TPM。由于其他子系统瓶颈的出现,在加入第4片DC S4500之后,其性能并没有明显增加

相对于DC S4500,DC P4600能够提供更好的性能表现,在只使用1片DC P4600 SSD做存储的情况下,其TPM就超过了140万,接近3片DC S4500所能提供的TPM性能。在加入第2片DC P4600 SSD之后,Oracle数据库达到172万TPM。同样由于其他子系统触及瓶颈,并未完全发挥2片NVMe SSD的性能,即使加入第3片DC P4600 SSD,其性能略有抬头,但并没有明显变化。

同时,SSD的使用让Oracle数据库取得近200万TPM时,平均响应时间(延迟)并没有明显变化,在逐次添加DC S4500 SSD做存储后,其平均响应时间均维持在2ms左右;而对于DC P4600 SSD而言,其平均响应时间也在2ms左右,在加入第3片DC P4600SSD之后,虽然TPM性能并未明显增加,但3片SSD均摊了I/O压力,让Oracle数据库的响应更快,其平均延迟反而下降了1ms。

此外,还有一个现象需要注意,在上述测试所用的Oracle数据库服务器中添加多块SSD,尤其是性能更好的NVMe SSD,其数据库性能很容易就到达顶点。在Oracle为代表的应用里,存储已经不再是瓶颈,计算资源的供应(如CPU核心数量、主频以及内存大小)需要针对性优化;同时,软件方面(如操作系统、应用程序本身)也需要进行优化,比如在Linux操作系统中,有实践证明,使用Intel推出的SPDK(Storage Performance Development Kit)套件+NVMe SSD有助于应用性能提升。

在实际应用环境中,诸如Oracle数据库等应用通常计算、存储分离部署,使用网络(iSCSI、FC或InfiniBand等)实现连接,企业用户要发挥(NVMe)SSD的性能优势,还需要评估网络性能,以防网络成为瓶颈。企事录实验室相关测试证明,使用更高带宽的网络(25/100GbE),同时启用RDMA(RoCE)等功能,并与NVMe over Fabrics规范相结合,能够显著提高存储子系统的性能表现。

经过本次测试,企事录实验室认为,SSD,尤其是NVMe SSD能够大幅提升存储子系统的性能表现,并降低响应时间(延迟),可以更好地支持企业应用,特别是对响应时间要求苛刻、IO密集型的企业关键业务应用,使用NVMe SSD将大幅提升用户体验。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227G06IMK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券