Cloud MySQL Performance Benchmark

Posts of Cloud MySQL Performance Benchmark

  • 概述

    在2018年,AWS首次推出Graviton EC2实例,2020年7月AWS RDS正式支持Graviton 2的实例,就在前两天,在最新的AWS re:Invent大会上,AWS已经推出了第四代Graviton 4实例。现在,AWS的Graviton已经较为成熟,也在大量的企业和应用被广泛使用。AWS官方也宣称使用Graviton 2的RDS实例能够有52%的性价比提升(参考)。这里,来通过标准的Sysbench测试来实测一下,看看实际Graviton 2实例的效果。

    与上次阿里云测试相同,这次依旧是使用了同样的测试工具和场景,对较为常用的4c16gb,即db.m6g.xlarge和db.m5.xlarge实例,进行并发数分别为2 4 8 16 24 32 48 64 96 128的测试。

    测试结论

    在性能上,平均来看,x86要比Graviton实例性能高约12.7%;x86规格延迟要比Graviton规格低15%。也注意到,在超高并发的情况下(并发超过96时),Graviton实例与x86实例无论是在性能,还是延迟上,是比较接近的,不过,这时候系统压力太大、延迟太高,对实际使用并没有太大的参考价值。

    为了更加直观的做性价比的比较,这里选取16并发时的数据进行对比。在16并发下,Graviton实例的TPS是275,db.m6g.xlarge价格是$0.836/小时;x86实例的TPS是341,价格是$0.94/小时。那么每100TPS,Graviton价格是0.304,x86是0.275。所以,在16并发时,相比之下,x86规格的性价比更高,高出Graviton实例10%。这个结果与测试之前预期还是非常不一样的,也与AWS宣称的完全不同。

    只有在超高的并发情况下(96/128并发),Graviton实例的吞吐量才与x86接近,这时,Graviton实例才表现出接近10%的性价比优势。但这种高并发在实际场景中并不是常态,所以并没有很强的参考价值。

    这个测试结果与预期的差别比较大,所以后来又再做过一次测试,结果与这次基本相同。所以,性能到底怎样,还是最终要自己实际测试,因为宣传的数据,通常都是非常极端的适配该产品的场景,并不是真实的场景。

    一下两幅图分别是TPS和平均延迟的对比图:

    横坐标是sysbench的并发线程数,纵坐标分别为tps和平均的延迟。

    测试模型说明

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

    实例配置与价格

    这里选择了较为常用4c16gb的实例进行测试,各个选项尽量选择默认选项,以更加接近的模拟用户实际场景,具体的,版本是AWS默认的8.0.33、多可用区版、存储默认加密、gp3存储、100GB空间、3000 IOPS、Performance Insight也默认开启。完整的选项参考如下:

    AWS的价格分为计算节点价格(CPU与内存)、存储价格、IOPS价格,这里仅关注计算节点价格。存储和IOPS对于ARM和x86实例来说,是相同的。这里的选择的是东京地区、多可用区实例的价格,如下:

    后续,也还将测试基于 io1(Provisioned IOPS SSD) 存储的RDS。

    详细测试数据参考

    AWS RDS Graviton(db.m6g.xlarge/gp3/100gb/3000iops/8.0.33)

    threads|transactions| queries| time |avg/Latency|95%/Latency
          2|       11951|  239020|300.03|      50.21|      55.82
          4|       23322|  466440|300.04|      51.45|      57.87
          8|       43654|  873080|300.05|      54.98|      65.65
         16|       82519| 1650380|300.05|      58.17|      70.55
         24|      120541| 2410820|300.06|      59.74|      73.13
         32|      156680| 3133600|300.07|      61.28|      74.46
         48|      218709| 4374180|300.06|      65.85|      81.48
         64|      269430| 5388600|300.08|      71.27|      90.78
         96|      329366| 6587320|300.07|      87.45|     121.08
        128|      351579| 7031580|300.11|     109.24|     164.45

    AWS x86实例(db.m5.xlarge/gp3/100gb/3000iops/8.0.33)

    threads|transactions| queries| time |avg/Latency|95%/Latency
          2|       13357|  267140|300.03|      44.92|     112.67
          4|       27539|  550780|300.03|      43.57|      50.11
          8|       55330| 1106600|300.04|      43.38|      51.94
         16|      102408| 2048160|300.05|      46.87|      56.84
         24|      145718| 2914360|300.05|      49.41|      61.08
         32|      186619| 3732380|300.05|      51.44|      63.32
         48|      260415| 5208300|300.04|      55.30|      69.29
         64|      306939| 6138780|300.08|      62.56|      82.96
         96|      330131| 6602620|300.09|      87.25|     123.28
        128|      348095| 6961900|300.12|     110.34|     155.80

    小结

    AWS RDS在发布Graviton 2实例时,曾宣传Graviton 2实例有52%的性价比提升。但是在这里的Sysbench混合读写的测试场景下,反而是x86性价比优势更加明显,16并发是,x86性价比要高出Graviton实例10%。而仅是在超高并发时,Graviton实例性价比才比x86高10%。但是,一般我们不会让4c16的实例,运行在如此高的压力下,所以后面这种情况的参考意义并不强。

    虽然AWS曾大量宣传Graviton实例,但是实测下来并没有什么性价比的优势。所以,在数据库应用场景下,使用AWS Graviton实例的必要性,似乎并不高。另外,也注意到,RDS Graviton 3的实例一直都没有推出,也许这是其中的原因之一。

    参考

  • 概述

    在之前,我们看到阿里云RDS的经济版(ARM)性价比要比x86高约31.5%。这是一个系列,这次我们来看看华为云的RDS MySQL的”通用型”(x86)与”鲲鹏通用增强型”(ARM)版本的情况如何。

    这里依旧选择了用户较为常用的4c16g的规格进行测试,测试工具使用了sysbencholtp_read_write模型进行测试。配置参数与选项,均尽量使用RDS购买过程中的默认选项,以给出更加接近用户使用时的配置。具体的,使用了华为云SSD云盘存储,选择了MySQL 8.0实例。

    结论

    在华为云上,x86与鲲鹏架构的RDS规格价格几乎是相同的。可以看到,鲲鹏版本的RDS相比x86版本约有15~45%的性能差距。不过,也必须要考虑,当下华为所处的“技术封锁”环境,以及自研鲲鹏芯片在中国自主可控芯片中的重要地位,在国内大量无法使用x86的场景中,这个性能下降是完全可以接受。另外,在当下复杂的地缘政治背景下,在更多的场景中使用自研芯片也是非常有必要的。

    测试方法说明

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

    测试使用的华为云RDS的主备跨可用区、高可用、SSD云盘、MySQL 8.0版本。

    规格与价格详情

    详细测试数据参考

    鲲鹏通用增强型的4c16g实例的测试详细结果如下:

    threads|transactions| queries| time |avg/Latency|95%/Latency
          2|       59875| 1197500|300.01|      10.02|      13.46
          4|      110962| 2219240|300.01|      10.81|      15.00
          8|      195460| 3909200|300.01|      12.28|      17.32
         16|      275443| 5508860|300.02|      17.43|      23.95
         24|      314560| 6291200|300.02|      22.89|      32.53
         32|      339116| 6782320|300.02|      28.31|      41.10
         48|      366827| 7336540|300.03|      39.26|      58.92
         64|      377796| 7555920|300.02|      50.82|      80.03
         96|      376462| 7529240|300.06|      76.51|     134.90
        128|      381086| 7621720|300.09|     100.78|     161.51

    通用型(x86版本) 4c16g实例的测试详细结果如下:

    threads|transactions| queries| time |avg/Latency|95%/Latency
          2|       70027| 1400540|300.01|       8.57|      10.84
          4|      131431| 2628620|300.01|       9.13|      11.87
          8|      232901| 4658020|300.01|      10.30|      13.70
         16|      381979| 7639580|300.02|      12.56|      17.01
         24|      484093| 9681860|300.02|      14.87|      20.37
         32|      558496|11169920|300.02|      17.19|      23.52
         48|      641926|12838520|300.03|      22.43|      31.37
         64|      683710|13674200|300.03|      28.08|      40.37
         96|      688588|13771760|300.04|      41.83|      69.29
        128|      696658|13933160|300.05|      55.12|      81.48

    小结

    自2019年,华为被美国列入“出口管制实体名单”以来,依旧可以在华为云上买到鲲鹏芯片已经是某种意义的重大突破。在实际测试过程中,相同的价格,约有30%的性能下降,考虑到鲲鹏芯片在国产芯片中的位置,依旧是非常出色的产品。在国产化要求高的场景,以及未来规划考虑国产化的场景,都可以开始尝试使用。华为,加油!

  • 概述

    阿里云数据库在去年云栖大会上发布了基于阿里倚天芯片(ARM架构)的RDS实例,后正式命名为经济版。本文通过标准的sysbench测试,来看看相比与标准版,经济版是否更加“经济”,以帮助开发者选择适合自己的规格。

    这里选择了用户较为常用的4c16g的规格进行测试,测试工具使用了sysbencholtp_read_write模型进行测试。配置参数与选项,均尽量使用RDS购买过程中的默认选项,以给出更加接近用户使用时的配置。具体的,使用了默认的“高性能参数模板”、使用了ESSD PL1存储,选择了默认的8.0实例。

    结论

    在如上的默认配置中,分别使用了2、4、8、10、12、14、16、24、32个并发线程进行测试。整体上,经济版(ARM)实例性能相比x86版要低约4%,延迟要高约4%。价格上,该规格经济版(ARM)相比x86版要低约36%,使用阿里云RDS经济版(ARM)性价比确实更高,相比标准版(x86)性价比要高出32%。

    具体的,这里我们选取16并发为性能基准参考,那么,对应的经济版TPS为2185,标准版的TPS为2324。价格上,该规格经济版价格为1.61元/时,标准版价格为2.52元/时,那么对应每1000个TPS的价格分别为:0.74元与1.08元。从性价比的角度来看,经济版提升了31.5%。

    所以,经济版(ARM)RDS还是非常值得一试。另一方面也可以看到x86版本在性能、延迟上依旧有一定的优势,如果追求更极限的性能,以及更好的稳定性,依旧建议使用x86版本。

    测试方法说明

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

    测试使用的RDS为4c16g的高可用系列、“通用”规格、磁盘使用ESSD PL1/100GB云盘、双可用区、MySQL 8.0的实例。测试的ECS使用8c8g规格,测试的ECS也在杭州可用区J,所以,注意测试过程中,RDS表现的Latency整体是非常低的。

    规格与价格明细

    详细测试数据参考

    RDS经济版(ARM)4c16g通用型实例的测试详细结果如下:

    threads|transactions| queries| time |avg/Latency|95%/Latency
          2|      115305| 2306100|300.01|       5.20|       5.99
          4|      225711| 4514220|300.01|       5.32|       6.09
          8|      425336| 8506720|300.01|       5.64|       6.91
         10|      518460|10369200|300.01|       5.78|       7.17
         12|      604286|12085720|300.01|       5.96|       7.70
         14|      634556|12691120|300.01|       6.62|      13.22
         16|      655665|13113300|300.01|       7.32|      21.89
         24|      628932|12578640|300.01|      11.45|      45.79
         32|      628452|12569040|300.03|      15.27|      57.87

    RDS标准版(x86)4c16g实例的测试详细结果如下:

    threads|transactions| queries| time |avg/Latency|95%/Latency
          2|      113699| 2273980|300.01|       5.28|       5.57
          4|      228466| 4569320|300.01|       5.25|       5.57
          8|      439913| 8798260|300.01|       5.45|       5.77
         10|      540436|10808720|300.01|       5.55|       5.88
         12|      629480|12589600|300.01|       5.72|       6.09
         14|      710254|14205080|300.01|       5.91|       7.30
         16|      697323|13946460|300.01|       6.88|      18.61
         24|      661203|13224060|300.01|      10.89|      47.47
         32|      656784|13135680|300.01|      14.61|      58.92

    限制与说明

    真实的场景会更加复杂一些,需要考虑的因素更多,例如数据库的场景模型、不同的参数模板、不同的磁盘性能(ESSD PL1/2/3)、不同世代的CPU、不同规格(“通用”、“独享”)、价格折扣等。本文尝试通过测试一个常用规格的、常用配置,给开发者一个直观的性能的感受,以帮助开发者选择合适的、更具性价比的数据库规格与类型。

    小结

    阿里云RDS的经济型(ARM版)正式商业化已经有一年时间,从实测来看,相比x86版本有着非常明显的性价比优势,相同规格性能损失约5%的情况下,价格有35%的下降,是非常适合开发测试环境,已经小范围在生产环境尝试使用的。

    最后,这将是一个系列的文章,后续还将考虑对比华为云、AWS的ARM实例与x86实例的性能,以帮助开发者选择更具性价比,更适合自己的数据库架构与规格。