SPDK实战、QoS延时验证:Intel Optane P4800X评测(5)
接上篇
《Intel Optane P4800X评测(序):不用缓存和电容保护的SSD?》
《Intel Optane P4800X评测(1):好钢如何用在刀刃上?》
《Optane P4800X评测(2):Oracle 170万TPM意味着什么?》
《Intel Optane P4800X评测(3):Windows绑核优化篇》
《MySQL的启示:Intel Optane P4800X评测(4)》
终于到了系列测试收官的一篇,之前还剩下一点遗憾,就是我们未能测出小于10μs的延时,可以在本文中补上了!
这张拼图来自我之前给大家展示过的2张照片,Intel OptaneSSD的主控和3D XPoint Memory颗粒内部的“黑科技”,仍然笼罩着面纱。
SPDK之缘起
进行这部分测试,是受到一位朋友写的文章《浅谈SPDK》启发,顺便在此给大家推荐下他的微信公众号“小麦杂记”。
小麦同学曾在全球顶级网络厂商工作多年,技术经验非常丰富;目前关注服务器、存储多一些,也会发表一些相关的大作。总之,他的文章我看了收获挺多。
要玩SPDK,有几个注意事项简单跟大家交代下:
1、SPDK依赖于同样用户态的DPDK;
2、当某个NVMe SSD工作在用户态下,对内核块设备驱动即不可见,就是说这块盘被SPDK独占了;
3、同理,FIO这些测试工具对SPDK控制的NVMe设备也不能用了,所以下面对比使用的是SPDK自带的perf,这个小测试程序功能没有FIO丰富,对比结果仅供参考。
Optane + SPDK:低QD性能优势进一步发挥
点击放大,以下同
从上面图表不难看出,SPDK在低并发/队列深度下的优势相当明显。无论IOPS还是延时,当队列深度1-4时SPDK的领先都在一倍以上,此时OptaneP4800X最低测出了6.49μs随机读延时的表现,终于验证了Intel产品文档中的规格。
当队列深度达到16之后,测试瓶颈开始显现在SSD硬件本身上面,SPDK和内核态没有明显差别了。也就是说,polling轮询相对于传统的中断I/O模式,3D XPoint Memory在低队列深度下的性能优势能够更好地发挥出来。
随机写测试的情况类似,Optane P4800X在队列深度=1时延迟低至8μs。写和读有一点不同的是,当并发/队列深度达到16或以上,SPDK下的IOPS超过55万,比官方标称的50万还要高。与之对应的是,这时延迟也要比内核态低。
到这里我们初步的结论是:SPDK有助于充分“压榨”出NVMe SSD的写性能潜力。下面再来看看P3700 SSD的测试情况。
Intel P3700:写IOPS、延时亦有改善
如上图,Intel P3700随机读在SPDK下也有一些提高,但远不及Optane P4800X明显。究其原因,应该是传统NAND闪存SSD在低队列深度下的自身瓶颈所致。
至于随机写,由于P3700上有DRAM Cache的帮助,SPDK带来的优势比读大了许多。同时也出现了和Optane P4800X类似的情况——最大写IOPS超出规格标称值,达到20.8万。
上面我截取了一段短时运行SPDK perf的输出——同时在OptaneP4800X和P3700上跑随机写。此时的45万IOPS还处于P3700 SSD的峰值性能(即写缓存效果+没有触发GC),所以两个SSD加在一起超过100万IOPS,并且只使用了Dell PowerEdgeR830服务器上Xeon E5-4610 v4 CPU的一个核心。
在前文《Intel Optane P4800X评测(3):Windows绑核优化篇》结尾处我曾列出过一张图表,Xeon单核SPDK可以跑到350万IOPS。那么上面我只是小试牛刀,在没有更多块SSD的情况下,体验了一把用户态pooling在CPU开销上的巨大优势。
SPDK测试部分小节
性能和资源利用是一回事,而SPDK在应用中的普及则是另外一回事。毕竟传统文件系统、应用都是跟Kernel块设备打交道,要牵涉到开发习惯等方面的变化。
我不是这方面的专家,只是觉得将来如果SPDK真的普及了,NVMe SSD的性能指标估计都要重新标高一些:)
QoS延时验证:Optane什么条件下最突出?
在此之前,我列出和对比的SSD延时都是平均值。而影响用户体验的不只这些,还有延时的稳定性,这方面可以通过QoS延时来反映,也就是在一定百分比范围内的响应时间最大值。
上面是Intel Optane P4800X官方文档中的QoS延时指标,公开了99.999% 4KB随机读写,队列深度1和16。
Intel SSD P3700之前则公布过更详细的ProductSpecification文档,分为99%和99.99%两种QoS等级,QD=1和128队列深度。
这次我们的验证测试引用QD=1和QD=16的指标进行对比。
Intel P3700这个4ms延时,可能是在某些特殊条件下才会达到吧?
这里先交待一下颜色的对应关系,以免给大家搞糊涂:)蓝色和绿色分别为Optane P4800X和P3700的官方标称值;而深红色和紫色则是我实测1小时的结果。
测试中发现一点意外情况——从前面的官方表格中大家可能也看出了——Intel P3700的99.99% QoS随机读延时标称4ms,比相应情况下随机写还要高很多。这感觉有点不太符合NAND闪存的特性?
而我只是想把事实列在这里,正如这几天看到同行朋友所说的,反复的读操作也可能触发GC(垃圾回收)。具体原理先不在这里讨论了,由于测试时间所限,每种条件下我只跑了1小时,所以测出的QoS延时比标称值要低一些。
总的来说,随着QoS的等级不断提高,两款SSD在随机读QD=1的差距呈现缩小趋势。
随机读QD=16的QoS延时,Optane P4800X依然优势明显。
同样应该是由于测试时间的关系,我们测试的P4800X随机写QoS延时也比官方标称低不少。由于是单队列,绝大多数I/O都能在SSD的写缓存中先合并,所以如果只看平均延时,FIO测试的结果会看出两款卡相差不多。而到了高等级QoS特别是99.999%时,Optane才显出10倍以上的优势。
高并发/QD下的的随机写QoS延时,可以说是Optane P4800X最擅长的地方。3D XPoint Memory介质可以直接写入,没有NAND闪存P/E Cycle(编程/擦除周期)产生的写放大,也不需要垃圾回收。所以我们看到P4800X的QD=16 99.999%随机写延时标称值为200μs,我实测1小时得到141μs,而P3700则高达8ms了。
致谢
本系列评测至此先告一段落了,希望我的努力结果能给大家带来客观的参考。同时也要感谢Dell和熊猫直播高级DBA杨尚刚的大力支持,以及更多朋友的帮助。
最后,还要感谢《企业存储技术》读者朋友们长期以来的关注和支持。在这里我要加一个小广告了:)如果对Optane SSD DC P4800X有采购意向的用户,Intel的朋友给推荐了他们总代的联系方式:
北京:张涌 zhangyong@digitalchina.com
上海:杨俊 eric_yang@cn.synnex-grp.com
深圳:何枫 Gavin.he@wpi-group.com
深圳:李涛 Tao.li@ex-channel.com
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。进一步交流技术,可以加我的QQ/微信:490834312。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)
尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!《企业存储技术》微信公众号:huangliang_storage
长按二维码可直接识别关注
历史文章汇总(传送门):http://chuansong.me/account/huangliang_storage