perf
perf 是 Linux 系统中的一个性能分析工具,全称为 Performance Analysis Tool,是 Linux 内核自带的一个强大的性能调试和诊断工具,用于分析应用程序和系统的性能瓶颈。
perf 可以帮助开发者和系统管理员跟踪 CPU、内存、I/O 等系统资源的使用情况,并找出性能问题的根源。
perf 的主要功能
性能事件采样:
跟踪 CPU 使用情况、上下文切换、分支预测等性能事件。
通过硬件性能计数器和内核事件收集数据。
热点分析:
分析代码中的热点区域(如函数、代码块),确定哪部分代码最耗时。
调用栈分析:
捕获函数调用栈,找出程序的性能瓶颈。
系统概况:
显示整个系统的性能概况,帮助优化全局性能。
I/O 和内存分析:
监控内存分配、缓存命中率、I/O 读写等指标。
跟踪和分析特定进程:
对指定的进程进行性能跟踪,分析其运行情况。
安装 perf
在大多数现代 Linux 发行版中,perf 是内核的一部分,可以通过包管理器安装。例如:
Ubuntu/Debian:
sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)
perf 的基本用法
- 查看帮助
perf help - 系统性能概览
显示系统性能的总体情况:perf stat ls
示例输出:
Performance counter stats for 'ls':
0.0012908 task-clock (msec)
1 context-switches
0 cpu-migrations
75 page-faults - 记录和分析程序性能
记录性能数据:
perf record ./my_program
这会生成一个默认名为 perf.data 的文件,记录性能事件。
分析记录的数据:
perf report
输出程序的性能热点,比如哪个函数或代码段占用了最多时间。 - 监控特定事件
监控 CPU 缓存、分支预测等事件:
perf stat -e cache-misses,branch-misses ./my_program - 函数调用栈
捕获程序的函数调用栈:
perf record -g ./my_program
perf report
输出包含调用关系的性能数据,帮助分析调用栈中的性能问题。 - 实时监控系统性能
实时监控系统性能指标:
perf top
类似 top 命令,但显示的是性能热点。
perf 的优势
内核支持:直接集成到 Linux 内核,支持硬件性能计数器。
强大功能:可以分析从应用程序到内核的各种性能问题。
细粒度分析:能够深入到函数、代码块级别进行分析。
浙公网安备 33010602011771号