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

the*_*472 7 linux performance multithreading profiling perf

perf record如果核心利用率大致恒定,则使用cpu周期进行采样对于查找优化候选者很有用。但是对于具有多个阶段的并行度不同的代码,计算cpu周期将着重强调并行阶段,同时又不强调会影响墙壁时间的顺序或有限并行度阶段。简而言之,单纯使用perf可能会凸显阿姆达尔定律的错误之

因此,问题是如何找到perf record/ perf report寻找减少墙壁时间的优化候选者,这可能是从并行并行代码中最热的循环到中等并行瓶颈到长单线程阶段的任何东西。

已知的解决方法有一些不足之处:

  • 在单个内核上执行工作负载,从而节省时间?cpu周期
  • 分别分析各个组件

元:这是一个法律约束特定随访到一个更一般的问题

the*_*472 3

KDAB Hotspot是一个 GUI,可以分析perf record输出,还可以显示上下文切换和核心利用率(如果配置文件已记录)-e sched:sched_switch --switch-events --sample-cpu

在此输入图像描述