在《Intel Optane P4800X评测(序):不用缓存和电容保护的SSD?》一文发表之后,有同行朋友不只一次询问后续测试的情况,看来大家对Optane/3D XPoint Memory的真实性能很感兴趣。
安装在R830半高PCIe扩展槽位上的Intel Optane P4800X
我们进行的Intel Optane SSD DC P4800X测试跑在Dell PowerEdge R830平台上,R830是一款2U四路服务器,支持XeonE5-4600 v4系列CPU。
另外值得一提的是,本次测试有幸邀请到熊猫直播高级DBA杨尚刚参与。许多朋友都知道,尚刚在互联网公司工作多年,是MySQL数据库等方面的专家。
FIO性能测试:验证和补充
之前我在《Optane P4800X内存模式背后技术》一文中列出过Intel ProductBrief文档所写的性能,也是用fio工具获取的。那么我们一方面想用自己的测试数据来做个验证,同时也能补充更多的性能指标,以便大家能够更全面地了解Optane P4800X。
1、低并发下IOPS,延时优势
通过实测,我们手头这块Optane P4800X SSD跑出了58万以上的4KB随机读IOPS,比资料中的55万略高;同样NVMe接口使用NAND闪存的P3700在高并发/队列深度(Quene Depth)下也测到了标称的46万。
而我们还注意到,当QD=64时P3700的读IOPS为39万,而QD=16时只有14万,与Optane P4800X形成鲜明对比。这个与之前了解到3D XPoint介质在低队列深度下表现突出是相符的。
大家知道Intel P3700的控制器是18通道,而在实际测试中64并发/队列深度也没把它的性能潜力压满,这让我想起2015年IDF期间曾经写过SSD性能的“色子效应”。
在《不用闪存了,OptaneSSD为何还要28%的OP?》一文中,谈到过OptaneP4800X 375GB可能是7通道设计。根据QD=16基本达到峰值的测试数据来看,3D XPoint Memory的实际并发效果比NAND闪存要好。
再来看看平均延时。在并发/QD为64和512时Optane P4800X的优势虽然没有达到与其单位容量价格成正比的水平,但QD 16低队列深度的表现让我们满意。
如上表,Optane P4800X当队列深度=1延时小于10μs,QD=16也仅上升到20μs。可以看出PCIe接口在这里的限制,如果未来做成DIMM形态插在内存通道上,与闪存的差距预计还会加大。
2、写稳定性,Optane没有FOB/稳态差别
4KB随机写IOPS,Optane P4800X标称的是50万,我们本次测出的54-55万还是稍高。至于IntelP3700,17万是资料中的标称值,至于20-21万的测试数据,有一部分是开始测试时还没有达到稳态写性能。下面列出并介绍下测试数据生成的详细图表,相信这个对大家会有参考价值。
注:在《Intel发布P4500、P4600 NVMe SSD:规格释疑》中我提到新一代P4600的最大稳态写IOPS提升到25万。
Intel SSD P3700随机写IOPS测试曲线
上图中的文字有点小,大家可以点击放大,我也辅助说明下——测试曲线是4K随机写IOPS,纵坐标刻度从10万到40万,横坐标为时间3600秒(1小时),蓝色、橙色和绿色曲线分别对应并发/QD 16、64和512。
大多数朋友应该都了解使用NAND闪存介质的SSD,其随机写性能在FOB(Fresh Out of The Box,新盘或者全盘擦除后)和稳态之间的差距。这里的蓝色曲线可以说相当典型,我们预先将满盘写满并开始测试,P3700的随机写一开始可达40万IOPS,当OP(超量分配)空间用满后台触发GC(垃圾回收)滑落到10万出头然后逐渐恢复到17万稳定值。
紧接下来的QD=64测试基本保持在稳态,而QD=512恰好则是我们后来进行过“性能恢复”再测的曲线,这个结果不难理解吧。
上图对比了Optane P4800X和P3700在并发/QD=64时的随机写IOPS曲线,可以看出前者明显更稳定。前文中我们提到过3D XPoint Memory没有传统SSD那样的写放大,也不需要垃圾回收。即改写数据时不需要先擦除以完成P/E Cycle,所以不会因为写满和存储空间的碎片化而影响性能稳定。相比之下,NAND闪存SSD在64及以上并发时的波动明显波动要多一些。
3、为什么说平均延时≠应用体验
随机写延时,Optane P4800X在高并发/队列深度下的优势也比较明显,而实际体验我认为比这个还要好(稍后给大家解释)。
上面这个P3700的数据我在不只一篇文章中列出过。尽管Intel标称的典型随机写延时为25μs,但队列深度为1时Cache的作用更加明显,我们测试并发/QD=16达到平均80μs。下面的详图对比推荐给大家。
Intel SSD P3700随机写延时测试曲线
上面这张延时图与前面的IOPS曲线相对应,纵坐标的刻度从1000到5000μs。这部分大致总结出2点:
1、 在测试中写IOPS较高的阶段,相应的延时也较短,但这段表现也还没达到稳态;
2、 并发加大后NAND闪存SSD的延时波动增加比较多。比如我们前面列出P3700在QD 512时2760μs的平均值,实际用户体验要按4000μs(即4ms)以上来评估了吧?
对比下面的Optane P4800X区别很直观:
Intel Optane P4800X随机写延时测试曲线
不难看出,P4800X在并发/QD=512随机写延时仍相当稳定,我觉得这个900μs左右的实际体验至少要比同样条件下P3700好4-5倍以上。
这就是为什么企业级SSD厂商强调QoS延时。《再谈3D XPoint:延时、QoS与队列深度》一文中我曾经有过详细一些的讨论,其中关于P3700的性能数据后来进行过更新,结论如下:
“…P3700 QoS 99.99% QD=16的读延时,如果不出意外应该在4-5ms之间,OptaneP4800X要胜出几十倍了。”
“Intel P3700在99.99% QoS范围、QD=1的4KB随机读延时为4ms,是Optane P4800X的60μs的接近70倍,而且后者给出的QoS等级还要更高…”
真实应用队列深度:ServerSAN、超融合带来的影响
在撰写本文之前,我记得曾经看到过关于实际应用存储负载,在队列深度方面的分析。网上搜了一下查到本文开头提到过那篇2015年IDF的文章。
根据这份数据,Hadoop大数据、使用HammerDB数据库工具压测TPC-C、HPC高性能计算、ZFS文件系统写日志,以及YCSB(Yahoo Cloud Serving Benchmark)产生的队列深度都不算高(10以内最多);只有TPC-H(OLAP)例外,甚至有一部分I/O达到260 QD以上。
较之两年前我有一点新体会:以上这个图表估计是监测服务器单机上的I/O负载,集中式存储系统的情况有些不同,因为经常要同时面对多个主机的访问,产生混合I/O负载。而ServerSAN和超融合的情况又有变化,因为存储(控制器)节点Scale-out扩展更加普遍。
再加上下一代服务器对NVMe SSD数量支持的增加,未来高性能的存储应用负载,最终分摊到每节点上单一SSD的I/O队列深度仍然不见得会很高。因此之前人们讲的可能还适用——以P3700为代表的NAND闪存盘,许多应用中其最大IOPS可能无法充分发挥。而OptaneP4800X的情况就不同了。
最后再交代一点,由于符合NVMe标准和通用驱动,目前AIC(PCIe插卡)形态Optane P4800X的兼容性应该比较好。在我们测试的PowerEdgeR830服务器平台上,表现良好而稳定。
引用自《Dell PowerEdge R830 Owner's Manual》Table 34. Expansion card installation order(部分),这里面有散热和机械装配的考虑。
由于多路Xeon服务器的PCIe插槽可能来自不同的CPU控制,安装前我们特意查阅了Dell的用户手册,感觉上图内容还是挺有用的。这既是用户建议也是内部兼容测试列表的一种反映。如果是半高NVMe PCIe SSD扩展卡,可以先使用3和4两个插槽,7/6/2/1都支持全高(半长)扩展卡。根据手册中的更多内容,可以看出PCIe槽编号3/6/7来自CPU 1,而1/2/4/5来自CPU 2,除了1、6插槽支持PCIe x16带宽之外余下都是x8信号。
本文先写到这里吧,后面再给大家分享包括数据库在内的更多测试结果。
特邀作者/测试专家介绍
杨尚刚,熊猫直播高级DBA ,之前在新浪负责新浪微博核心数据库架构设计和优化,以及数据库平台硬件测试和选型。