Linux Perf火焰图生成
1、安装perf
yum -y install perf
2、下载火焰图生成工具
git clone https://github.com/brendangregg/FlameGraph.git
3、收集数据
这条命令使用了
perf
工具来记录进程 ID 为 1847 的应用程序在 30 秒内的性能数据,并以每秒 100 次的频率进行采样,同时也记录了调用图。让我解释一下各个参数的含义:
perf record
: 这个命令用于启动perf
工具并开始记录性能数据。-F 100
: 这个参数指定了每秒钟采样的次数,即采样频率为 100Hz,也就是每秒钟会对目标进程进行 100 次采样。-p 1847
: 这个参数指定了要监视的进程的进程 ID(PID)。在这个例子中,PID 为 1847 的进程会被监视。-g
: 这个参数表示记录调用图(Call Graph),也就是记录每个采样时的函数调用堆栈信息,以便后续生成火焰图。-- sleep 30
: 这个部分是指在perf record
命令后面运行sleep 30
命令,即持续 30 秒,然后perf
工具会在这个期间记录性能数据。总之,这条命令的作用是在 30 秒内以每秒 100 次的频率记录进程 ID 为 1847 的应用程序的性能数据,并记录调用图。
针对某个进程
perf record -F 100 -p 1847 -g -- sleep 30
针对所有进程
perf record -F 100 -g -- sleep 30
4、生成火焰图
生成折叠的堆栈信息
这个命令将 perf script 的输出通过 stackcollapse-perf.pl 脚本进行处理,并将结果保存到 folded.stacks 文件中。请确保 folded.stacks 文件中包含了正确的折叠堆栈信息。
perf script -i perf.data | /root/FlameGraph-master/stackcollapse-perf.pl > folded.stacks
生成火焰图
/root/FlameGraph-master/flamegraph.pl folded.stacks > output.svg