天天看点

MySQL的启示:Intel Optane P4800X评测(4)

本次测试特邀熊猫直播高级DBA杨尚刚参与。尚刚在互联网公司工作多年,是MySQL数据库等方面的专家。

在这一系列评测中,从前面几篇已经可以全面了解使用3D XPoint Memory的Optane P4800X SSD硬件本身的性能,以及在Oracle数据库中的表现和价值。如果还没看过并且有兴趣的朋友可以点击下列链接:

至于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写稳定性更好

注: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比就应该在同一级别了。

根据常识SSD的写性能和寿命与容量有关,Intel新一代的P4600虽然写速度更快些,但由于其3DTLC闪存的寿命没有P3700高,所以写耐久度不在一个级别。目前第一代3D XPoint介质已经达到了30 DWPD,而且Optene P4800X只用375GB就达到了50万稳态随机写IOPS。

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/