ITPub博客

首页 > 数据库 > 数据库开发技术 > 硬件架构对 数据库的影响 MYSQL 应该在ARM 还是X86 (翻译)

硬件架构对 数据库的影响 MYSQL 应该在ARM 还是X86 (翻译)

原创 数据库开发技术 作者:liuaustin 时间:2021-11-19 06:00:00 0 删除 编辑


下面就是一篇关于MYSQL 在 ARM 结构和X86结构上不同的性能表现的文字翻译,实话说曾经测试时(PG),ARM结构的VS X86结构的PG 的确X86更有优势。下面我们看看MYSQL 在不同的物理结构上的不同表现。别说和你没有关系,ARM结构的服务器已经渗透到了 云厂商,国家政府,军队,等等部门和机构,谁也保不准就用上了ARM 结构的服务器。


———————————————————————————————

        

译文:
MYSQL 在X86 或 ARM 结构,当我们讨论这个问题的时候,可能随着不断的扩展,会发现很多有意思的事情,但在我们面对很多的数据之前,我们先明白一下这两种结构的不同,除了从CISC 和 RISC 结构来看不同以外,我们最重要的主题是针对MYSQL来说那个结构更好。


这里有几个问题

1   内存模式的高低

2   底层专用指令的不同,例如对于CRC32编码基于硬件没有不同而不同         在于处于底层的指令集合X86 SSE 或者 ARM-ACLE 对指令执行的不同。

3    Cahce的不同,基于ARM结构的处理器更倾向于使用大量的缓存。

4   比如ARM 结构中缺少PAUSE指令,导致在需要低延迟的情况下,无替代指令,某些操作在ARM上的消耗更大,造成一些操作上的挑战和内存使用的问题,如在使用中会有高延迟。


实际上社区已经在MYSQL 上做了一些补丁来适应,但实际上MYSQL 对于ARM结构的支持刚刚开始,大部分工作尚未完成,只优化了少部分的代码。


所以我们现在最重要的是看看一些关于性能方面的问题,我们通过MYSQL 8.019来进行测试,分别在不同的硬件产品上 X86 和 ARM 上来进行比较。


测试硬件为


  • 24 vCPU/48 GB Intel(R) Xeon(R) Gold 6266C CPU @ 3.00GHz for running MySQL on x86.

  • 24 vCPU/48 GB ARM @ 2.60GHz for running MySQL on ARM


两种不同的硬件产品,测试是通过sysbench进行的,测试中数据经过预热,并且通过不同维度的包含OLTP 读写操作, UPDATE 操作中包含索引和不包含索引,以及只读操作等等来查看两种硬件在此的不同。


相关测试的表和配置如下


  • Table: 96-tables * 1.5 million (data-size= 34GB)

  • Buffer Pool: 36GB

  • Redo-Log: 4GB*2

  • TC-run-time: 300 secs

  • TC-warmup: 60 (sysbench –warmup-time)

  • workload-query-based warmup: 600

  • change-over-sleep: 180

  • checksum-based-warmup: enabled

  • data-storage: 300GB (support for 16500 IOPS (nullify effect of Burst IOPS)).


测试结果

1  简单查询




threads ARM (qps) x86 (qps) ARM (qps - fscaled (FS)) % ARM-vs-x86 % ARM (FS)-vs-x86
1 6696 6439 7726 4 20
2 12482 11774 14402 6 22
4 23881 21308 27555 12 29
8 45993 42110 53069 9 26
16 88517 81239 102135 9 26
32 142974 136724 164970 5 21
64 198839 212484 229430 -6 8
128 217778 241555 251282 -10 4
256 209797 224009 242073 -6

8


分析:

在较低线程的情况下,ARM 要优于X86结构,在高负载的情况下,X86要优于ARM结构,同时在FS CPU 自动调整频率的情况下ARM 结构 比X86要优越。


2 只读测试




threads ARM (qps) x86 (qps) ARM (qps - fscaled (FS)) % ARM-vs-x86 % ARM (FS)-vs-x86
1 5222 5259 6025 -1 15
2 10333 10200 11923 1 17
4 19176 19349 22126 -1 14
8 36881 37035 42555 0 15
16 70337 67065 81158 5 21
32 109207 113210 126008 -4 11
64 139294 164148 160724 -15 -2
128 151382 175872 174672 -14 -1
256 149136 164382 172080 -9 5

结果分析:

ARM 结构在定频的方式下与X86性能相近,但在FS的情况下,ARM结构产品要优于X86的产品。


3 读写模式


threads ARM (tps) x86 (tps) ARM (tps - fscaled (FS)) % ARM-vs-x86 % ARM (FS)-vs-x86
1 137 149 158 -8 6
2 251 273 290 -8 6
4 462 502 533 -8 6
8 852 920 983 -7 7
16 1539 1678 1776 -8 6
32 2556 2906 2949 -12 1
64 3770 5158 4350 -27 -16
128 5015 8131 5787 -38 -29
256 5676 8562 6549 -34 -24

结果分析:

在读写模式下, ARM 结构比较X86结构都有一定的差距。


4 update 带索引的情况


threads ARM (tps) x86 (tps) ARM (tps - fscaled (FS)) % ARM-vs-x86 % ARM (FS)-vs-x86
1 328 373 378 -12 1
2 623 768 719 -19 -6
4 1060 1148 1223 -8 7
8 1905 2028 2198 -6 8
16 3284 3590 3789 -9 6
32 5543 6275 6396 -12 2
64 9138 10381 10544 -12 2
128 13879 16868 16014 -18 -5
256 19954 25459 23024 -22 -10


结果分析:

在FS 模式下的ARM结构对比X86的结果相近,在高并发的情况下还是有一定的差距。



5  Update  不带索引的情况




threads ARM (tps) x86 (tps) ARM (tps - fscaled (FS)) % ARM-vs-x86 % ARM (FS)-vs-x86
1 328 373 378 -12 1
2 588 686 678 -14 -1
4 1075 1118 1240 -4 11
8 1941 2043 2240 -5 10
16 3367 3662 3885 -8 6
32 5681 6438 6555 -12 2
64 9328 10631 10763 -12 1
128 14158 17245 16336 -18 -5
256 20377 26367 23512 -23 -11


结果分析:

在低并发的情况下,ARM结构FS模式要比X86性能略强,但在高并发的情况下,MYSQL在X86要比ARM结构表现的更好。


总结:

以下是一些测试通过观察我们得出的结论

1  对于只读工作负载,X86 与ARM 性能相近

2  对于写操作,X86比较稳定,ARM结构中FS模式会更好

3  FS 模式下的ARM并不是大多数情况下的使用方式,但需要注意的是ARM结构的产品比X86产品的价格要低,测试中随着系统争用变多,ARM系统的性能降低,但我们也需要注意MYSQL 也是刚刚开始支持ARM结构的产品,尤其的自旋锁上并没有像X86一样进行优化。


总结:MYSQL 从使用成本考量上,ARM结构的产品应该还是一个性价比可期待的。




原文:

https://mysqlonarm.github.io/MySQL-on-x86-vs-ARM/


注:FS 模式为CPU 超频模式


个人观点:在目前的情况下,无论是PG 还是MYSQL 尽量还是在X86结构的硬件产品上使用,ARM结构目前对于这些开源数据库并不是太友好,尤其在高并发的情况下。




 





   


原文作者:AustinDatabases;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-11-13

  • 博文量
    1980
  • 访问量
    518171