网站设计潮流,一起做网店 网站打不开,环球贸易网官网,在xampp下搭建本地网站perf 命令详解
perf 是 Linux 系统中最强大的 性能分析工具#xff0c;基于内核的 perf_events 子系统实现#xff0c;支持硬件性能计数器#xff08;PMC#xff09;、软件事件跟踪等功能#xff0c;用于定位 CPU、内存、I/O 等性能瓶颈。以下是其核心用法与实战…perf 命令详解
perf 是 Linux 系统中最强大的 性能分析工具基于内核的 perf_events 子系统实现支持硬件性能计数器PMC、软件事件跟踪等功能用于定位 CPU、内存、I/O 等性能瓶颈。以下是其核心用法与实战指南
一、安装与基础配置 安装
# Debian/Ubuntu
sudo apt install linux-tools-common linux-tools-$(uname -r)# CentOS/RHEL
sudo yum install perf# 验证安装
perf --version 2. 内核符号支持
安装调试符号包如 linux-image-$(uname -r)-dbgsym以便 perf 解析内核函数名。临时允许非特权用户使用性能监控可选
sudo sysctl kernel.perf_event_paranoid-1二、核心功能与子命令
子命令功能描述perf stat统计程序运行的硬件事件如缓存命中率perf record记录性能数据生成 .data 文件perf report分析 record 生成的数据perf top实时监控系统或进程的性能热点perf trace跟踪系统调用类似 straceperf probe动态添加内核或用户空间探针
三、常用场景与实战示例
1. 统计程序性能事件
# 统计命令执行期间的 CPU 周期、缓存命中等
perf stat -e cycles,cache-misses,branch-misses ./my_program输出示例 Performance counter stats for ./my_program:2,356,789 cycles # 3.801 GHz45,678 cache-misses # 2.123 % of all cache refs12,345 branch-misses # 0.56% of all branches0.001234567 seconds time elapsed2. 采样 CPU 热点函数
# 记录进程的 CPU 使用采样频率 99Hz
perf record -F 99 -g -- ./my_program # -g 记录调用栈
perf report --stdio # 文本报告
perf report --guigtk # 图形化分析需安装 gtk 支持输出解读
Overhead函数占用的 CPU 时间比例。Command进程名。Shared Object所属动态库或可执行文件。
3. 生成火焰图Flame Graph
# 1. 记录性能数据
perf record -F 99 -g -- ./my_program
# 2. 生成折叠堆栈
perf script out.perf
stackcollapse-perf.pl out.perf out.folded
# 3. 生成火焰图
flamegraph.pl out.folded flamegraph.svg火焰图直观展示函数调用栈的 CPU 占用分布横向宽度表示耗时比例。
4. 跟踪系统调用
# 类似 strace但性能更高记录所有线程
perf trace -e syscalls:sys_enter_* ./my_program过滤特定系统调用
perf trace -e syscalls:sys_enter_open,syscalls:sys_enter_read5. 动态添加探针
# 在内核函数 add_to_page_cache_lru 添加探针
perf probe --add add_to_page_cache_lru
# 跟踪探针事件
perf record -e probe:add_to_page_cache_lru -a四、高级功能 硬件性能计数器 使用 perf list 查看支持的事件如 instructions、branch-misses
perf stat -e instructions,L1-dcache-load-misses ./my_program 2. 用户空间静态探针 在代码中插入静态探针需编译时支持
#include sys/sdt.h
int main() {DTRACE_PROBE(myapp, operation_start); // 探针点// ...
}跟踪探针
perf buildid-cache --add ./my_program # 注册程序
perf probe --exec./my_program --add myapp:operation_start
perf record -e probe_myapp:* ./my_program五、注意事项
权限要求 部分功能如硬件计数器需要 root 权限或 CAP_PERFMON 能力。 性能开销 perf record 高频采样可能导致目标程序变慢生产环境慎用。 符号解析 若函数名显示为十六进制地址需安装调试符号如 -dbgsym 包。 六、与其他工具对比
工具特点适用场景perf内核级支持硬件级性能分析CPU/内存瓶颈、调用链分析strace系统调用跟踪文件/网络操作调试gdb源码级调试程序崩溃、逻辑错误 掌握 perf 可快速定位性能问题尤其在高并发、低延迟场景中作用显著。结合火焰图和动态探针能实现从宏观到微观的全方位分析。