本文是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,与官网公布的成绩一致。