1、yum install -y perf
安装perf工具
git clone --depth 1 https://github.com/brendangregg/FlameGraph.git
下载FlameGraph
2、perf record -F 99 -p 29873 -m 4 -g -a -- sleep 60
每个参数详细的解释见 linux perf Examples
perf record -F 99 -p 29873 -g --call-graph dwarf
-e <event>:指定性能事件(可以是多个,用,分隔列表)
-p <pid>:指定待分析进程的 pid(可以是多个,用,分隔列表)
-t <tid>:指定待分析线程的 tid(可以是多个,用,分隔列表)
-u <uid>:指定收集的用户数据,uid为名称或数字
-a:从所有 CPU 收集系统数据
-g:开启 call-graph (stack chain/backtrace) 记录
-C <cpu-list>:只统计指定 CPU 列表的数据,如:0,1,3或1-2
-r <RT priority>:perf 程序以SCHED_FIFO实时优先级RT priority运行这里填入的数值越大,进程优先级越高(即 nice 值越小)
-c <count>: 事件每发生 count 次采一次样
-F <n>:每秒采样 n 次
-o <output.data>:指定输出文件output.data,默认输出到perf.data
3、perf script > out.perf
将二进制信息转换为ASCII格式的文件
4、./FlameGraph/stackcollapse-perf.pl out.perf > out.folded
转换为FlameGraph生成火焰图需要的数据格式
5、./FlameGraph/flamegraph.pl out.folded > out.svg
生成SVG格式的矢量图
6、查看矢量图,此处几乎没有压力,仅做一个demo