aarch64 上的系统调用性能低于 x86-64

aarch64 上的系统调用性能低于 x86-64

有谁知道为什么系统调用在 64 位 ARM (aarch64) 上执行比 64 位 Intel CPU (x86-64) 需要更长的时间?请参阅下面我的基准测试设置。

  • 64 位 ARM CPU:Ampere Altra Q80-30,80 核,3 GHz
  • 64 位 Intel CPU:Intel Xeon Gold 5317 CPU,12 核(24 线程),频率设置为最大 3 GHz

操作系统:Ubuntu 20.04 LTS,Linux 内核:5.13.0-41-generic(在 ARM 和 Xeon 上)

基准测试:UnixBench 系统调用(https://github.com/kdlucas/byte-unixbench) (https://github.com/kdlucas/byte-unixbench/blob/master/UnixBench/src/syscall.c

运行命令:./syscall 10(对于混合系统调用)或./syscall 10 close(仅适用于 close())

我使用 perf 分析了执行情况并得到了以下结果(对于 ./syscall 10 close):

                       Altra             Xeon
Duration [s]                  10              10
Throughput [lps]      23,194,919      47,938,768
Cycles            30,000,710,570  29,968,373,641
Instructions      37,767,647,457  40,044,878,500
IPC                         1.26            1.34
Calls                231,949,190     479,387,680
Instructions per call     162.83           83.53

因此,在相同频率 (3 GHz) 下,Xeon 执行的系统调用数量是 Altra 的两倍。 Altra 每次调用需要 2 倍的指令数量(163 比 84)。这是否有任何架构(aarch64 与 x86-64)原因?

相关内容