读懂火焰图

Yishto 2021-08-20 21:46:10
Categories: Tags:
1
2
3
4
5
6
7
8
9
sudo perf record -F 99 -p 13204 -g  -- sleep 30 
# perf record 采集cpu 数据
# -F 99 每秒采集 99
# -p 13204 进程号
# -g 返回调用栈
# sleep 30 采集30s

会产生上百万行数据, 很难分析, 所以有了火焰图

y轴:调用栈,每一层都是一个函数, 最顶端的是正在执行的函数, 下面的是其父函数, 构成一个调用栈

X轴:抽样次数,如果越宽, 代表采集中被多次采集到的, 代表占用cpu时间越长,左右不是按照时间排序的, 而是按照字母顺序排序的

调用栈太深, 只会展示一部分

匿名函数的火焰图是6分空梯子。

3 中显示:

a 中有个条件分支, 但是d被抽样的次数太多了, 所以要先优化d(), 在优化c(), 优化顶部比较宽的函数。