【发布时间】:2014-05-30 15:49:48
【问题描述】:
Brendan D. Gregg(DTrace 书籍的作者)有一个有趣的分析变体:"Off-CPU" profiling(和 Off-CPU Flame Graph;slides 2013, p112-137)查看线程或应用程序被阻塞的位置(未被 CPU 执行,但正在等待 I/O、页面错误处理程序或因 CPU 资源不足而取消调度):
这一次揭示了哪些代码路径在 CPU 关闭时被阻塞和等待,以及确切的等待时间。这与传统的分析不同,后者通常以给定的时间间隔对线程的活动进行采样,并且(通常)仅在线程在 CPU 上执行工作时才检查它们。
他还可以将 Off-CPU profile 数据和 On-CPU profile 结合在一起:http://www.brendangregg.com/FlameGraphs/hotcoldflamegraphs.html
Gregg 给出的示例是使用dtrace 制作的,这在 Linux 操作系统中通常不可用。但是有一些类似的工具(ktap、systemtap、perf)和perf,因为我认为拥有最广泛的安装基础。通常perf 会生成 On-CPU 配置文件(这些函数在 CPU 上执行的频率更高)。
- 如何将 Gregg 的 Off-CPU 示例转换为 Linux 中的
perf分析工具?
PS:slides from LISA13, p124 中有指向 Off-CPU 火焰图的 systemtap 变体的链接:“Yichun Zhang 创建了这些,并一直在 Linux 上通过 SystemTap 使用它们来收集配置文件数据。请参阅: • @ 987654326@""(CloudFlare 啤酒会议,2013 年 8 月 23 日)
【问题讨论】:
-
相关问题 - 使用 perf 分析睡眠时间:stackoverflow.com/questions/21756067/…