Perf 是Linux kernel⾃带的系统性能优化⼯具, Perf的优势在于与Linux Kernel的紧密结合。Perf 可以 计算每个时钟周期内的指令数, 还可以对程序进⾏函数级别的采样,从⽽了解程序的性能瓶颈究竟在哪 ⾥。更多细节请参考perf性能分析工具使用分享_良知犹存的博客-CSDN博客_perf report怎么看
sudo apt-get install linux-tools-common linux-tools-"$(uname -r)" linux-cloud-tools-"$(uname -r)" linux-tools-generic linux-cloud-tools-generic
perf根据进程pid记录进程cpu使⽤情况 sudo perf record -e cpu-clock -g -p 13108 ctrl + c停⽌记录,发现当前⽬录下保存了⽂件perf.data
使⽤perf report查看 sudo perf report -i perf.data
FlameGraph 可将perf记录的数据转换为⽕焰图,该⼯具使⽤perl脚本编写,下载直接使⽤。
git clone https://github.com/brendangregg/FlameGraph.git
渲染后的perf.data是一张svg图(浏览器)
1. 启动需要性能分析的进程节点(explore)
2. 获取进程pid号
3. perf根据pid号记录cpu时间 && ctrl+c停止记录,得到perf.data
gene_record_pid.sh脚本如下:
- #!/bin/bash
-
- if [ $# -ne 1 ];then
- echo "[Warning] need add pid of progress!"
- else
- rm -rf perf*
- #sudo perf record -e cpu-clock -g -p 13108
- sudo perf record -e cpu-clock -g -p $1
- fi
4. 制作火焰图
gen_frame_graph.sh脚本如下:
- #!/bin/bash
-
- rm -rf perf.unfold perf.folded perf.svg
-
- # 1.使用perf script工具对per.data进行解析
- sudo perf script -i perf.data &> perf.unfold
-
- # 2.将perf.unfold中的符号进行折叠
- ../FlameGraph/stackcollapse-perf.pl perf.unfold &> perf.folded
-
- # 3.最后生成svg图
- ../FlameGraph/flamegraph.pl perf.folded > perf.svg