Red Hat Training

A Red Hat training course is available for RHEL 8

第 24 章 flamegraphs 入门

作为系统管理员,您可以使用 flamegraphs 创建使用 perf 工具记录的系统性能数据的视觉化呈现。作为软件开发商,您可以使用 flamegraphs 创建使用 perf 工具记录的应用程序性能数据的视觉化呈现。

sampling stack traces 是使用 perf 工具分析 CPU 性能的常用技术。遗憾的是,使用 perf 分析堆栈踪迹的结果可能非常详细,且需要分析大量劳动力。flamegraphs 视觉化从使用 perf 记录的数据创建,以便更快速、轻松地识别热代码路径。

24.1. 安装 flamegraphs

要开始使用 flamegraphs,请安装所需的软件包。

流程

  • 安装 flamegraphs 软件包:

    # yum install js-d3-flame-graph

24.2. 在整个系统中创建 flamegraphs

这个步骤描述了如何使用 flamegraphs 视觉化在整个系统中记录的性能数据。

先决条件

流程

  • 记录数据并创建视觉化:

    # perf script flamegraph -a -F 99 sleep 60

    这个命令在 60 秒内对整个系统的性能数据进行抽样并记录,因为使用 sleep 命令,然后构建将存储在当前活跃目录中的视觉化呈现为 flamegraph.html。默认情况下,命令示例 call-graph 数据,并使用与 perf 工具相同的参数,在这种情况下:

    -a
    强制记录整个系统中的数据。
    -F
    设置每秒抽样频率:

验证步骤

  • 为了进行分析,请查看生成的视觉化:

    # xdg-open flamegraph.html

    这个命令在默认浏览器中打开视觉化:

    flamegraph allcpus

24.3. 在特定进程上创建 flamegraphs

您可以使用 flamegraphs 视觉化通过特定运行的进程记录的性能数据。

先决条件

流程

  • 记录数据并创建视觉化:

    # perf script flamegraph -a -F 99 -p ID1,ID2 sleep 60

    这个命令在 60 秒内对进程 ID 为 ID1ID2 的进程的性能数据进行抽样并记录,通过使用 sleep 命令可以生成视觉化,然后以 flamegraph.html 形式存储在当前活动目录中。默认情况下,命令示例 call-graph 数据,并使用与 perf 工具相同的参数,在这种情况下:

    -a
    强制记录整个系统中的数据。
    -F
    设置每秒抽样频率:
    -p
    对特定进程 ID 进行抽样并记录数据的步骤:

验证步骤

  • 为了进行分析,请查看生成的视觉化:

    # xdg-open flamegraph.html

    这个命令在默认浏览器中打开视觉化:

    flamegraph

24.4. 解释 flamegraphs

Flangraph 中的每个方框表示堆栈中的不同功能。y-xis 显示了堆栈的深度,每个堆栈中最顶层框是实际运行在 CPU 上的功能,其下方的所有内容都处于就绪状态。x-axis 显示示例调用-graph 数据的填充。

给定行中的堆栈子级显示基于每个相应函数按照 x-axis 降序获取的示例数量;x-axis 并不代表时间传递。个人盒越宽,在数据被采样时,它越常发生 CPU 或 CPU ancestry 的一部分。

流程

  • 显示之前可能未显示的功能名称,并进一步调查 flamegraph 中的框以放大到给定位置的堆栈中:

    zoomed in flamegraph

  • 要返回 flamegraph 的默认视图,点 Reset Zoom
重要

代表用户空间函数的框可以在 flamegraphs 中标记为 Unknown,因为该功能的二进制被剥离。必须安装可执行文件的 debuginfo 软件包,如果可执行文件是本地开发的应用程序,则必须使用调试信息编译应用程序。使用 GCC 中的 -g 选项显示在这种情况下的功能名称或符号。

flamegraph