对 cpu 周期进行采样perf record
如果核心利用率大致恒定,则对于寻找优化候选非常有用。但对于具有并行性不同的多个阶段的代码,计算 cpu 周期将重点强调并行阶段,而低估影响挂机时间的顺序或有限并行阶段。简而言之,天真的 perf 使用可能会突出显示错误的肢体阿姆达尔定律 https://en.wikipedia.org/wiki/Amdahl%27s_law
所以问题是如何得到perf record
/perf report
找到减少挂机时间的优化候选者,挂机时间可以是从一致并行代码中最热的循环、中等并行瓶颈到长单线程阶段的任何内容。
已知的解决方法还有待改进:
- 在单个核心上执行工作负载,以便实际运行时间≅ cpu 周期
- 分别分析各个组件
meta: this is a perf-specific followup to a more general question https://stackoverflow.com/questions/45251182/thread-utilization-profiling-on-linux
KDAB 热点 https://github.com/KDAB/hotspot是一个可以分析的GUIperf record
输出,如果配置文件已记录,还显示上下文切换和核心利用率-e sched:sched_switch --switch-events --sample-cpu
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)