当前位置: 首页 > 面试题库 >

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

邵研
2023-03-14
问题内容

Brendan D. Gregg(DTrace书的作者)有一个有趣的配置文件变体:“ Off-
CPU”配置文件
(和Off-CPU Flame
Graph
;幻灯片2013,第112-137页),查看线程或应用程序被阻塞的位置(是不是由CPU执行,而是由于CPU资源不足而正在等待I
/ O,页面错误处理程序或调度的):

这段时间揭示了在关闭CPU时哪些代码路径被阻塞并等待,以及确切地等待了多长时间。这不同于传统的分析,传统的分析通常以给定的时间间隔对线程的活动进行采样,并且(通常)仅在线程正在CPU上执行工作时才检查线程。

他还可以将CPU外配置文件数据和CPU上配置文件组合在一起:http
:
//www.brendangregg.com/FlameGraphs/hotcoldflamegraphs.html

Gregg给出的示例是使用制作的dtrace,在Linux
OS中通常不可用。但是也有一些类似的工具(ktap,systemtap,perf),而perf我认为该工具具有最广泛的安装基础。通常perf生成的CPU上的配置文件(哪些功能在CPU上执行得更多)。

  • 如何将Gregg的Off-CPU示例转换perf为Linux中的分析工具?

PS:LISA13,
p124中的幻灯片中有离
CPU火焰图的systemtap变体的链接:“ Yichun
Zhang创建了这些,并已在Linux上使用它们与SystemTap来收集特性数据。请参阅:• http:// agentzh .org / misc /
slides / off-cpu-flame-graphs.pdf “
”(2013年8月23日的CloudFlare啤酒会议)


问题答案:

我发表的perf技术[1]是一个高开销的解决方法,直到perf对此提供BPF支持为止。

目前,在Linux上生成CPU外火焰图的成本最低的方法是在4.6+内核(具有BPF堆栈跟踪支持)上,并且具有bcc /
BPF。我为此编写了一个工具offcputime [2],该工具可以与-
f选项一起运行以用于“折叠输出”,适合于将其输入flamegraph.pl。这个offcputime工具对内核内容中的所有内容进行计时和堆栈计数,并转储报告,然后用符号打印。

我希望有一天,perf本身也将能够做到这一点:运行一个BPF程序,该程序执行内核内计数和报告转储。

同时,我们可以使用密件抄送/
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网络配置工具的使用,包括了linux网络配置工具的使用的使用技巧和注意事项,需要的朋友参考一下 本文介绍了RHEL8网络服务和网络配置工具,以及网络防火墙和规则管理工具。 NetworkManager网络管理工具 NetworkManager提供了RHEL8的网络服务,每一个网络设备都关联一个NetworkManager device,对网络设备的配置保存在NetworkM

  • 我的工具链来源于输入时,命令行显示它可以工作。 tl@tl-virtual-machine:~/desktop/mvux_camera/demo/sampli_save_demo$arm-fsl-linux-gnueabi-gcc-v使用内置规范。collect_gcc=arm-fsl-linux-gnueabi-gcc collect_lto_wrapper=/home/tl/desktop/o

  • 火焰图(Flame Graph)想必大家都听过,它可以将 CPU 的使用情况可视化,使我们直观地了解到程序的性能瓶颈。我们通常要结合操作系统的性能分析工具(profiling tracer)使用火焰图,常见的操作系统的性能分析工具如下: Linux:perf, eBPF, SystemTap, and ktap。 Solaris, illumos, FreeBSD:DTrace。 Mac OS X

  • 使用外置比较工具 选项--diff-cmd和--diff3-cmd的形式相似,也有类似名称的运行配置参数(见“配置”一节),这会导致一个错误的观念,也就是在Subversion中使用外置的比较(或“diff”)和合并工具会非常的容易,虽然Subversion可以使用大多数类似的工具,但是设置这些工具绝非易事。 Subversion和外置比较和合并工具的接口可以追溯到很久以前,当时Subversio

  • 本文向大家介绍Python文档生成工具pydoc使用介绍,包括了Python文档生成工具pydoc使用介绍的使用技巧和注意事项,需要的朋友参考一下 在Python中有很多很好的工具来生成字符串文档(docstring),比如说: epydoc、doxygen、sphinx,但始终觉得pydoc还是不错的工具,用法非常简单,功能也算不错,本文主要介绍pydoc. pydoc是Python自带的模块,