概述
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 时间最多的函数。