下面就是一篇关于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结构目前对于这些开源数据库并不是太友好,尤其在高并发的情况下。