标签: radiance

用不同的内核版本分析性能回归的原因

我在x86_64系统上遇到了从Linux内核3.11到3.12的奇怪性能回归.在Fedora 20,3.12上运行Mark Stock's Radiance基准测试的速度明显变慢.没有其他任何改变 - 相同的二进制,相同的glibc - 我只是启动一个不同的内核版本,性能改变.定时程序rpict是1​​00%CPU绑定的用户级代码.

在我将此报告为错误之前,我想找到导致此行为的原因.我对Linux内核了解不多,从3.11到3.12的更改日志并没有给我任何线索.

我在两个系统上观察到了这一点,Intel Haswell(i7-4771)和AMD Richland(A8-6600K).在Haswell系统上,用户时间从895秒变为3.11到962变为3.12.在里奇兰,从1764年到1844年.这些时间可以在几秒钟内重复.

我用perf进行了一些分析,发现IPC与减速的比例下降了.在Haswell系统中,这似乎是由更多错过的分支引起的,但为什么预测率会下降?Radiance确实使用随机数生成器 - 可能"更好"的随机性导致错过的分支?但除了OMAP4支持外,RNG在3.12中似乎没有变化.

在AMD系统上,perf只指向更多空闲的后端周期,但原因尚不清楚.

Haswell系统:

3.11.10  895s user, 3.74% branch-misses, 1.65 insns per cycle
3.12.6   962s user, 4.22% branch-misses, 1.52 insns per cycle
Run Code Online (Sandbox Code Playgroud)

里奇兰系统:

3.11.10  1764s user, 8.23% branch-misses, 0.75 insns per cycle
3.12.6   1844s user, 8.26% branch-misses, 0.72 insns per cycle
Run Code Online (Sandbox Code Playgroud)

我还查看了两个内核的dmesg输出中的差异,但没有看到任何可能导致CPU绑定程序如此减速的事情.

我尝试将cpufreq 调控器从默认的ondemand切换到peformance但是没有任何效果.

可执行文件是使用gcc 4.7.3编译的,但不使用AVX指令.libm似乎仍然使用一些AVX(例如__ieee754_pow_fma4),但这些功能仅占总执行时间的0.3%.

附加信息:

performance linux-kernel perf radiance

18
推荐指数
1
解决办法
1393
查看次数

标签 统计

linux-kernel ×1

perf ×1

performance ×1

radiance ×1