> 软件包与系统管理 > perf

perf: Linux 性能分析工具

perf 是 Linux 内核内置的强大性能监控和分析工具。它用于跟踪各种硬件和软件事件,如 CPU 使用率、缓存未命中、系统调用等,以识别和优化应用程序及系统的性能瓶颈。它在内核级别运行,提供非常详细和准确的性能数据。

概述

perf 是开发人员和系统管理员诊断和优化性能问题的必备工具。它通过各种子命令提供广泛的性能分析功能,包括统计信息收集、事件记录和报告生成。

主要功能

  • CPU 性能分析 (CPU 使用率、调用栈分析)
  • 硬件事件监控 (缓存未命中、分支预测失败等)
  • 软件事件监控 (调度事件、页面错误等)
  • 系统调用跟踪和分析
  • 动态跟踪 (kprobes, uprobes)

主要选项 (子命令)

perf 通过各种子命令执行功能。每个子命令都有其独特的选项。

perf stat: 收集统计信息

perf record: 记录性能数据

perf report: 分析记录的数据

perf list: 可用事件列表

生成的命令:

请尝试组合命令。

描述:

`perf` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

perf 命令的各种使用示例。

查看 ls 命令执行统计

perf stat ls

查看 ls 命令执行期间的 CPU 周期、指令数、缓存未命中等基本性能统计信息。

监控特定进程 5 秒

perf stat -p 1234 sleep 5

监控 PID 为 1234 的进程的性能统计信息 5 秒钟。(需要替换为实际 PID)

记录应用程序执行过程中的调用图

perf record -g ./my_app

记录 my_app 执行期间包含函数调用栈信息的性能数据。记录的数据将保存在 perf.data 文件中。

分析记录的数据

perf report

交互式分析 perf record 生成的 perf.data 文件,以可视化方式查看性能瓶颈。

查看可用的硬件事件列表

perf list hw

查看当前系统 perf 可以监控的所有硬件性能事件列表。

安装

perf 可能未在大多数 Linux 发行版中默认安装。您可以使用以下命令进行安装。

Debian/Ubuntu

sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)

在 Debian 或 Ubuntu 基于的系统上安装 perf 的命令。需要安装与内核版本匹配的 linux-tools 包。

CentOS/RHEL/Fedora

sudo yum install perf
# 或 sudo dnf install perf (Fedora)

在 CentOS、RHEL 或 Fedora 基于的系统上安装 perf 的命令。

提示与注意事项

使用 perf 时的有用提示和需要注意的事项。

Root 权限

大多数 perf 命令需要收集系统范围的性能数据,因此需要 Root 权限 (sudo)。

  • 如果执行 perf 命令时出现 'Operation not permitted' 错误,请尝试使用 sudo。

加载内核符号

如果在 perf report 中函数名称显示为 'unknown',则需要加载内核符号。这可以通过安装 'kernel-debuginfo' 或 'kernel-devel' 包来实现。

  • CentOS/RHEL: `sudo debuginfo-install kernel`
  • Ubuntu/Debian: `sudo apt install linux-image-$(uname -r)-dbg`

开销

perf 收集非常详细的数据,特别是使用高采样频率进行 `perf record` 时,可能会对系统产生一定的开销。在生产环境中应谨慎使用。

  • 对于对性能敏感的系统,请从较低的采样频率 (-F 选项) 开始,以最小化开销。

利用 perf top

`perf top` 是一个有用的子命令,可以实时显示 CPU 使用率高的函数。它适用于简单的性能监控。

  • 使用 `perf top` 可以快速识别当前系统中消耗 CPU 时间最多的函数。

相同类别命令