Red Hat Training

A Red Hat training course is available for RHEL 8

第 20 章 使用 perf 调查忙碌 CPU

在调查系统中的性能问题时,您可以使用 perf 工具来识别和监控忙碌 CPU,以便专注于工作。

20.1. 使用 perf stat 显示在哪些 CPU 事件计数

您可以使用 perf stat 来通过禁用 CPU 计数聚合来显示哪些 CPU 事件计数。您必须使用 -a 标记计算系统范围模式中的事件,才能使用此功能。

先决条件

流程

  • 计数禁用 CPU 数量聚合的事件:

    # perf stat -a -A sleep seconds

    前面的示例显示在 seconds 秒的时间段记录的一组默认通用硬件和软件事件的计数,这由使用 sleep 命令以升序排列的每个 CPU 指定的,从 CPU0 开始。因此,指定周期等事件可能会很有用:

    # perf stat -a -A -e cycles sleep seconds

20.2. 显示使用 perf 报告进行的 CPU 样本

perf record 命令对性能数据进行样本,并将这些数据保存在可以使用 perf report 命令读取的 perf.data 文件中。perf record 命令始终记录获取的 CPU 样本。您可以配置 perf report 来显示此信息。

先决条件

  • 您已安装了 perf 用户空间工具,如安装 perf 所述。
  • 当前目录中使用 perf record 创建了一个 perf.data 文件。如果 perf.data 文件是使用 root 访问权限创建的,则需要同时使用 root 访问权限运行 perf report

流程

  • 在按 CPU 排序时显示 perf.data 文件的内容以进行进一步分析:

    # perf report --sort cpu
    • 您可以按 CPU 和命令排序,以显示 CPU 时间所花位置的更多详细信息:

      # perf report --sort cpu,comm

      本示例将列出所有受监控 CPU 的命令,按开销使用量降序排列所有受监控 CPU 的命令,并确定运行命令所针对的 CPU。

20.3. 在使用 perf top 分析时显示特定的 CPU

您可以将 perf top 配置为在实时分析系统时显示特定 CPU 及其相对使用情况。

先决条件

流程

  • 在按 CPU 排序时启动 perf top 接口:

    # perf top --sort cpu

    本示例将实时按开销使用量降序列出 CPU 及其对应的开销。

    • 您可以按 CPU 和命令排序,以获取有关 CPU 时间所花位置的更多详细信息:

      # perf top --sort cpu,comm

      本示例将按开销使用量降序排列命令列出命令,并确定实时执行该命令的 CPU。

20.4. 使用 perf 记录和 perf 报告监控特定 CPU

您可以将 perf record 配置为仅抽样相关特定 CPU,并使用 perf report 分析生成的 perf.data 文件,以便进一步分析。

先决条件

流程

  1. 示例并在特定 CPU 中记录性能数据,生成 perf.data 文件:

    • 使用以逗号分隔的 CPU 列表:

      # perf record -C 0,1 sleep seconds

      前面的示例在 CPU 0 和 1 中记录数据,时间为 seconds 秒,具体取决于使用 sleep 命令的规定。

    • 使用一组 CPU:

      # perf record -C 0-2 sleep seconds

      前面的示例示例并记录 CPU 0 到 2 中所有 CPU 中的数据,时间为 seconds 秒(根据使用 sleep 命令的规定)。

  2. 显示 perf.data 文件的内容以进行进一步分析:

    # perf report

    这个示例将显示 perf.data 的内容。如果您正在监控多个 CPU,并想了解哪个 CPU 数据被抽样,请参阅 显示使用 perf 报告进行的 CPU 样本