如何使用linux`perf`工具生成“Off-CPU”配置文件
Brendan D. Gregg(DTrace书的作者)有趣的变种:
“Off-CPU” profiling(和
Off-CPU Flame Graph;
slides 2013,p112-137)看到,线程或应用程序被阻止(没有被CPU执行,但是等待I / O,pagefault处理程序,或由于CPU资源不足而被排除):
他还可以将Off-CPU配置文件数据和On-CPU配置文件组合在一起: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收集数据,参见:http://agentzh.org/misc/slides/off-cpu-flame-graphs.pdf”“(CloudFlare Beer Meeting on 23 2013年8月) 解决方法
我发表的perf技术[1]是一个高开销的解决方法,直到perf有BPF支持这样做.
现在,在Linux上生成非CPU火焰图的最低成本方法是在4.6内核(其具有BPF堆栈跟踪支持)以及bcc / BPF.我为它编写了一个工具,offcputime [2],可以使用-f选项来运行“折叠输出”,适用于进入flamegraph.pl.这个offcputime工具在内核内容中执行计时和堆栈计数,并转储一个随后用符号打印的报告. 有一天,我期望perf本身也能够做到这一点:运行一个执行内核计数的BPF程序,并倾倒报告. 在此期间,我们可以使用bcc / BPF.如果由于某种原因,您不能使用bcc,您现在可以使用该offcputime程序并将其写入C.Linux源代码中提供了更复杂的版本,如samples / bpf / offwaketime *.在Linux上使用新的BPF功能,如果有意志,就有办法. [1] http://www.brendangregg.com/blog/2015-02-26/linux-perf-off-cpu-flame-graph.html [2] https://github.com/iovisor/bcc/blob/master/tools/offcputime_example.txt (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |