安装
1 2 3 4 5 6
| sudo apt install linux-tools-common sudo apt install linux-tools-generic linux-cloud-tools-generic
sudo apt-get update sudo apt-get upgrade sudo apt-get install linux-tools-5.4.0-77-generic linux-cloud-tools-5.4.0-77-generic
|
linux-tools 的版本要根据你自身的系统内核来改变。
还要安装一个工具,来生成火焰图:
1 2 3
| git clone https:
export PATH=$PATH:FlameGraph的绝对路径
|
生成火焰图
1 2 3 4 5 6 7
| sudo perf record -F 99 -g ./my_app sudo perf script > out.perf stackcollapse-perf.pl out.perf > out.folded flamegraph.pl out.folded > flamegraph.svg
|
理解火焰图
颜色本身没有什么意义
每一列代表一个调用栈(纵向表示调用栈的深度),每一个格子代表一个函数(横向表示消耗的时间)。
横向来看
- 由于横向表示消耗的时间,所以一个格子的宽度越大越说明其可能是瓶颈
纵向来看
- 由于纵向表示调用栈的深度,所以火焰的火苗尖部就是CPU正在执行的操作
综上