使用perf查找线程瓶颈并优化挂墙时间

时间:2019-03-13 00:00:18

标签: linux multithreading performance profiling perf

如果核心利用率大致恒定,则使用perf record采样cpu周期对于查找优化候选者很有用。但是对于具有多个阶段的并行度不同的代码,计算cpu周期将强调大量的并行阶段,同时又不强调会影响挂墙时间的顺序或有限并行度阶段。简而言之,单纯使用perf可能会突出显示amdahl's law

的错误肢体

所以问题是如何获得perf record / perf report来寻找减少墙壁时间的优化候选者,这可能是持续并行的瓶颈中始终并行的并行代码中最热的循环到一个漫长的单线程阶段。

已知的解决方法有待改进:

  • 在单个内核上执行工作负载,以使挂墙时间≅cpu周期
  • 分别分析各个组件

元:这是针对特定性能的跟踪to a more general question

1 个答案:

答案 0 :(得分:2)

KDAB Hotspot 是一个 GUI,可以分析 perf record 输出,如果配置文件已使用 -e sched:sched_switch --switch-events --sample-cpu

记录,还可以显示上下文切换和核心利用率

enter image description here