AWS基于x86 vs Graviton(ARM)的RDS MySQL性能对比(二)

这是一个云数据库性能的系列文章,包含了:

在前篇中(参考),较为详细的对比x86和Graviton 2(AWS推出第二代ARM芯片)的性能。Graviton 3实例在今年的4月份支持了RDS数据库(参考)。这里,我们再系统的看看m7g实例(Graviton 3)、m6g实例(Graviton 2)、m5实例(Intel Xeon)、m6i实例(第三代Intel Xeon/Ice Lake)的RDS性能(包括性价比)表现如何。

测试结论

参考下图。整体上,在中低并发时,m6i实例(第三代Intel Xeon/Ice Lake)、m5实例(Intel Xeon)性能要比m7g实例(Graviton 3)、m6i实例(第三代Intel Xeon/Ice Lake)实例要略微高一些。即,低并发时,x86实例性能要高出约10%

在超高并发的时候性能表现:m7g实例 > m6i实例 > m6g实例 ~ m5实例。在超高并发下,m7g、m6i实例表现出了非常强的扩展性和吞吐量,m7g实例吞吐量最高,甚至高出m6i实例10%;相比m6g、m5实例,m7g实例性能则要高出30%

为了更加直观对比性价比,这里选取了16并发的性能进行对比。m7g实例在16并发下,tps为314,价格为$0.936/小时;m6i实例的tps为336,价格为$0.94/小时。所以,m6i实例(x86)性价比要比m7g实例(Graviton 3)更高,高出约:6%。在超高并发时(128并发),m7g实例(Graviton 3)实例性价比才比m6i实例(x86)要更高,高出约:10%。不过,无论怎样,这与AWS宣称的Graviton实例性价比更高的结论是不一致的。

测试模型说明

这里使用了sysbench的读写混合模型(oltp_read_write)进行测试,单表大小为100万,共十个表,单次测试时长为300秒,分别测试了如下的并发度的性能表现:2 4 8 16 24 32 48 64 96 128

实例配置与价格

这里关注db.m7g.xlarge、db.m6i.xlarge实例价格,m6g、m5实例的价格可以参考前篇。以东京地区、多可用区实例价格为参考:

实例配置与之前的测试保持一致。选择了较为常用4c16gb的实例进行测试,各个选项尽量选择默认选项,以更加接近的模拟用户实际场景,具体的,版本是AWS多可用区版、存储默认加密、gp3存储、100GB空间、3000 IOPS、Performance Insight也默认开启。

详细的测试数据参考

AWS RDS Graviton 3(db.m7g.xlarge/gp3/100gb/3000iops)

threads|transactions| queries| time |avg/Latency|95%/Latency
2|       10847|  216940|300.04|      55.32|     127.81
4|       25897|  517940|300.00|      46.34|      51.94
8|       49010|  980200|300.05|      48.97|      55.82
16|       94335| 1886700|300.05|      50.89|      58.92
24|      141987| 2839740|300.05|      50.71|      59.99
32|      185996| 3719920|300.05|      51.62|      62.19
48|      268264| 5365280|300.05|      53.68|      68.05
64|      341468| 6829360|300.06|      56.23|      74.46
96|      446113| 8922260|300.06|      64.56|      92.42
128|      491663| 9833260|300.09|      78.11|     121.0

AWS RDS x86(第三代Intel Xeon/Ice Lake)(db.m6i.xlarge/gp3/100gb/3000iops)

threads|transactions| queries| time |avg/Latency|95%/Latency
2|       13281|  265620|300.02|      45.18|     112.67
4|       29635|  592700|300.04|      40.49|      47.47
8|       53875| 1077500|300.04|      44.55|      53.85
16|      100785| 2015700|300.07|      47.63|      57.87
24|      150515| 3010300|300.04|      47.84|      59.99
32|      193195| 3863900|300.05|      49.69|      63.32
48|      273454| 5469080|300.08|      52.67|      69.29
64|      343939| 6878780|300.05|      55.83|      75.82
96|      408551| 8171020|300.09|      70.50|      99.33
128|      438708| 8774160|300.06|      87.54|     123.28

小结

经过较为详细的测试,可以看到,在RDS数据库的场景下,无论是第二代自研芯片Graviton2,还是第三代Graviton3,相比于x86芯片在性价比上并没有特别明显的优势。而在更加常见的低并发的场景下,x86实例的性价比依旧是更高的。在超高并发时,Graviton3实例虽然表现出了一些性价比优势,但是,如此高的并发,其实在实际应用中,并不常见。

另外,第三代Graviton3相比第二代Graviton2的性能提升也是非常明显,大概有10~40%的性能提升

当然,这应该也是符合预期的结论,毕竟在大原则上,处理复杂的负载x86芯片应该更有优势;对简单的场景、更低功耗的场景,Graviton(ARM)芯片是更有优势的。对于数据库来说,涉及到事务处理、磁盘IO、大量的比较判断等,还是比较复杂的。不过,依旧期待未来,Graviton做更多的适配与正对性的优化,以获得更高的性价比,从而降低最终降低使用RDS的成本。

参考

Leave a Reply

Your email address will not be published. Required fields are marked *