如何使用linux`perf`工具生成“Off-CPU”配置文件

如何使用linux`perf`工具生成“Off-CPU”配置文件,第1张

概述Brendan D. Gregg(DTrace书的作者)有趣的变种: “Off-CPU” profiling(和 Off-CPU Flame Graph; slides 2013, p112-137)看到,线程或应用程序被阻止(没有被CPU执行,但是等待I / O,pagefault处理程序,或由于CPU资源不足而被排除): This time reveals which code-paths a Brendan D. Gregg(DTrace书的作者)有趣的变种: “Off-CPU” profiling(和 Off-CPU Flame Graph; slides 2013,p112-137)看到,线程或应用程序被阻止(没有被cpu执行,但是等待I / O,pagefault处理程序,或由于cpu资源不足而被排除):

This time reveals which code-paths are blocked and waiting while off-cpu,and for how long exactly. This differs from Traditional profiling which often samples the activity of threads at a given interval,and (usually) only examine threads if they are executing work on-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

总结

以上是内存溢出为你收集整理的如何使用linux`perf`工具生成“Off-CPU”配置文件全部内容,希望文章能够帮你解决如何使用linux`perf`工具生成“Off-CPU”配置文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存