Aarch64 CPU Benchmarks for Performance Degrade
导言
测试人员之前有台高性能的测试机器,未知原因坏了之后,他们修好之后,发现性能损失。推测是鲲鹏920的性能损失,为此需要:
- 通过benchmark证明性能损失。
- 定位并说明性能损失原因:1. 软件硬件? 2. 硬件老化还是流片差异?
- 确定性能损失原因,并给出解决方案。
系统配置¶
- CPU:频率,缓存大小
- 内存:
dmidecode -t memory|grep DDR4 -A 5 -B11
- OS:
Benchmark¶
- 由于当前场景只需要证明同一产品的性能损失,并不比较不同产品间的性能绝对值。
-
与其使用复杂、实际场景的benchmark,不同从简单指令入手。
-
C++代码插桩 G-benchmark
- 数据库为主 sysbench
- stress 命令 (对于 Debian/Ubuntu 系统)
- 各种老牌应用 UnixBench
micro-Benchmark¶
All¶
- 上下文启动和系统调用开销 contextswitch
- 访存 lmbench
X86¶
- 微架构 nanobench
- 微架构 uarch-bench
小结¶
- 两个系统如果没有特别注意,从g++编译器,OS的配置都不同。
- 这会导致即使简单的add指令性能一样。
- 随着程序更加复杂,编译器和OS的变量加入进来,性能差异也越来越大。
- 编译器和Kernel版本比较难迭代测试,最终只会得到性能不同的结果,但是难以分析出具体是什么原因,只能说用最新的编译器和Kernel版本。