本文是NVMe SSD系列文章的第三篇,在前两篇文章中分别介绍了
Intel SSD的十年发展历程
,
以及不同接口形态的NVMe SSD如何与硬件平台相结合
;本篇文章将分享企事录实验室在实际应用环境中测试获得的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测试数据,对其进行随机读取性能测试,测试完毕后整理数据并进行对比,其结果如下: