本次测试特邀熊猫直播高级DBA杨尚刚参与。尚刚在互联网公司工作多年,是MySQL数据库等方面的专家。
在这一系列评测中,从前面几篇已经可以全面了解使用3D XPoint Memory的Optane P4800X SSD硬件本身的性能,以及在Oracle数据库中的表现和价值。如果还没看过并且有兴趣的朋友可以点击下列链接:
《Intel Optane P4800X评测(序):不用缓存和电容保护的SSD?》
《Intel Optane P4800X评测(1):好钢如何用在刀刃上?》
《Optane P4800X评测(2):Oracle 170万TPM意味着什么?》
《Intel Optane P4800X评测(3):Windows绑核优化篇》
至于MySQL,在Intel官网上也有一篇文章《Applying Intel Optane SSDsto MySQL- Part 1 Fast Storage》,其中的测试数据还看上去还不错。那么我们自己的实测结果如何呢?
测试环境还是之前那套平台:Dell PowerEdge R830服务器,配置4颗Xeon E5-4610 v4 1.8G十核CPU和256GB内存。分别检验数据库放在Intel SSD P3700和Optane P4800X上的表现。
首先,我们将列出bufferpool(也就是数据库在系统内存中的缓存)设置为14GB时的测试结果。
第一轮测试:P3700已跑满,Optane仍有余地
测试数据库MySQL 5.7.18 官方社区版
QPS(query persecond)包括数据库的读写操作,横坐标为并发数,以下同
select查询场景是只读操作。由于测试平台CPU总共40个物理核心/80线程,SysBench压测到128线程已达峰值性能。进一步观察,在Optane P4800X和P3700两者QPS差不多的情况下,P3700的ioutil能到100%,而Optane的ioutil在60-70左右。也就是说P3700已经到了极限,而Optane还是有空间的,进一步性能发挥可能受限于MySQL自身或者CPU。
由于数据库缓存的作用,该场景的平均延时表现差不多(瓶颈不在卡上),所以上面我们列出的是95% QoS延时。这个应该就是Cache未能命中那些落到SSD上的I/O,所以低并发时Optane的优势大一些。
insert插数据场景则是100%写,我看了OptaneP4800X和P3700的数据没有明显差距,无论QPS还是延时。由于bufferpool的缓存作用,insert此时应该主要受限于MySQL本身。下文中我们还会列出调小Cache后的insert压测曲线。
这个图表比较的是平均延时,与上面一张不同。
OLTP场景为混合读写。记得早年看到另一位DBA专家朋友@jametone在微博上写道:存储的(小块)I/O中,读容易离散而写相对连续的时候多(印象中是这个意思)。一方面数据库Cache有合并作用,此外日志文件也是顺序写。
由于这里的事物比前面复杂,64并发测试的延时不到10ms,128并发为15ms左右,都在可以接受的范围内。
以上测试MySQL Cache大小设置为14GB,如果将其上调则缓存命中率提高,测试数据还能更好一些,但Optane P4800X和P3700的差距也会更加不明显。
调低Cache命中率,压到SSD上现差距
我们知道数据库的Cache命中率取决于2个因素:内存Cache容量和库文件(数据集)大小。为了体验Cache命中率较低时的情况,我们此次选择不改变数据量,而是把bufferpool调整为1GB。
当数据库Cache减小为1GB之后,OLTP场景的QPS数值有所下降,而两块SSD卡也拉开了差距。在64并发下P3700的平均延时已经超过20ms,此时OptaneP4800X还不到10ms。下面是1小时的压测曲线:
注:蓝色和橙色曲线分别为Intel Optane P4800X(3D XPoint Memory)和P3700(NAND闪存),此时数据库缓存命中率较低,压力能够反映到SSD上,所以差距比较大。
Insert场景:Optane写稳定性更好
在数据库缓存命中率较低时,insert插入测试的差别也更明显了,Optane P4800X的QPS较为稳定,而P3700则有较大幅度跌落的时候(与《Intel Optane P4800X评测(1):好钢如何用在刀刃上?》一文中的结果接近)。虽然主要的瓶颈在数据库,但Optane还是能够改善性能稳定性。
注:Intel SSDP3700的DWPD(5年平均每天整盘随机写遍数)高达17,在传统NAND闪存SSD中属于寿命高、写性能稳定的代表之一。
官方测试对比思考:环境、评估标准不同
上图来自我在开头提到那篇Intel网站上的文章,这里也是对比的OLTP工作负载,为什么结论与我们的测试有些不同呢?下面我来解释一下:
1、 首先,Intel这一测试使用了与OptaneSSD容量相对接近的400GB P3700,从下表中可以看出其写入性能与1.6TB、2TB大容量点差距较大,由于这个Optane P4800X显得“更快”。而我们的测试则主动选择了P3700 2TB,因为更想看到Optane与旗舰闪存卡之间的比较。
价格上,大家都知道3D XPoint Memory单位容量比较贵吧,不过要是拿P3700 2TB与P4800X 375GB比就应该在同一级别了。
这个表格我在《Intel发布P4500、P4600 NVMe SSD:规格释疑》一文中列出过
根据常识SSD的写性能和寿命与容量有关,Intel新一代的P4600虽然写速度更快些,但由于其3DTLC闪存的寿命没有P3700高,所以写耐久度不在一个级别。目前第一代3D XPoint介质已经达到了30 DWPD,而且Optene P4800X只用375GB就达到了50万稳态随机写IOPS。
2、 Intel这个10倍差距,比较的是99% QoS延时在10ms左右的TPS性能。这比人们通常对比的平均延时和95% QoS要求更加苛刻。而早在《再谈3D XPoint:延时、QoS与队列深度》一文中我就提到QoS延时是OptaneP4800X的一大优势。
3、 Intel的测试平台使用了2颗Intel Xeon E5 2699 v4 CPU,主频2.2GHz一共44核心;比我们用的4颗Xeon E5-4610v4 1.8G(共40核)性能要高一些,有助于缓解CPU在数据库测试中的瓶颈。当然这不是PowerEdgeR830服务器平台的不足,如果我能用E5-4669 v4之类的CPU测,估计又是另外一番风景了。
总结
与之前Oracle测试中的情况类似,MySQL SysBench也是在数据库Cache命中率调低后,才能将SSD存储的差距放大。正如尚刚所说,如今瓶颈更多在于CPU和软件本身,“软件的适配还跟不上硬件的发展”。
上文中还提到了QoS延时,顺便我也做个预告:系列评测的下一篇除了SDPK之外,还会让P4800X和P3700的QoS延时同场竞技。请大家继续关注!
特邀作者/测试专家介绍
杨尚刚,熊猫直播高级DBA,之前在新浪负责新浪微博核心数据库架构设计和优化,以及数据库平台硬件测试和选型。
参考资料 https://itpeernetwork.intel.com/applying-intel-optane-ssds-to-mysql-part-1-fast-storage/