CPU问题排查

方法一:使用perf进行cpu分析

【安装方式:在root用户下运行yum install perf -y】

在终端使用perf top分析,查找函数热点

perf top -g -p pid

重点查看self列高的那一行

可以看到上面的例子中,A函数是热点,需要重点关注;按下Enter键可以展开调用链,如下图所示:

 

 

 

 

方法二:使用火焰图进行查看

格子宽度大的函数/方法,很有可能就是性能瓶颈所在

1)perf record -a -g -p 31705 -F 1000 sleep 10 // 采集10秒的数据保存在perf.data中
2)perf script -i perf.data &> perf.unfold // 用perf script工具对perf.data进行解析
3)./stackcollapse-perf.pl perf.unfold &> perf.folded // 将perf.unfold中的符号进行折叠
4)./flamegraph.pl perf.folded > perf.svg // 生成svg火焰图
5)使用浏览器打开perf.svg,可以发现函数A的占比最高,需要重点关注,如下图所示:

说明:stackcollapse-perf.pl和flamegraph.pl 下载地址:https://github.com/brendangregg/FlameGraph

 

对火焰图做diff:

1)首先生成两个不同的folded文件: folded1,folded2

2)使用difffolded脚本比较这两个折叠文件,并生成差异输出

./difffolded.pl out.folded1 out.folded2 > diff.folded

3)使用FlameGraph脚本将差异输出转换为SVG火焰图

./flamegraph.pl diff.folded > diff.svg

 

posted @ 2023-08-08 08:53  郭流水  阅读(26)  评论(0编辑  收藏  举报