1. perf安装
❯Bash
sudo apt install linux-tools-$(uname -r)2. perf使用
perf的top/record等操作都需要root权限
2.1. perf top
perf top 是实时显示系统/进程的性能统计信息
perf top 常用参数
| arg | notes |
|---|---|
| -e | 指定性能事件 |
| -a | 显示所有cpu上的性能统计信息 |
| -C | 显示指定cpu上的性能统计信息 |
| ==-p== | 指定进程PID |
| ==-t== | 指定线程TID |
| -K | 隐藏内核同级信息 |
| -U | 隐藏用户控件统计信息 |
| -s | 指定待解析的符号信息 |
2.2. perf record
可以记录event发生时详细的数据(堆栈等信息,系统/进程的性能时间),可以自定义需要的event
perf record常用参数
| arg | notes |
|---|---|
| -e | 选择性能事件 |
| -p | 待分析进程的id |
| -t | 待分析线程的id |
| -a | 分析整个系统的性能 |
| -C | 只采集指定CPU数据 |
| -c | 事件的采样周期 |
| -o | 指定输出文件,默认为perf.data |
| -A | 以append的方式写输出文件 |
| -f | 以OverWrite的方式写输出文件 |
| -g | 记录函数间的调用关系 |
| -F | 采样评率,采样频率建议在4000以内,避免造成太多开销 |
❯Bash
sudo perf record -g -p 100863. 火焰图
❯Bash
wget https://github.com/brendangregg/FlameGraph/archive/master.zip
unzip master.zip
sudo mv FlameGraph-master/ /opt/FlameGraph❯Bash
export PATH=$PATH:/opt/FlameGraph4. 例子
4.1. 采样数据
❯Bash
sudo perf record -e cpu-clock -g -p 285914.2. 解析数据
❯Bash
sudo perf script -i perf.data &> perf.unfold4.3 对符号进行折叠
❯Bash
stackcollapse-perf.pl perf.unfold &> perf.folded4.4. 生成svg图
❯Bash
flamegraph.pl perf.folded > perf.svg