火焰图

火焰图

使用dtrace 分析程序性能 #

运行程序并采样, <main> 替换为待分析的程序

# 采样到程序结束
sudo dtrace -c './<main>' -o out.stacks -n 'profile-997 /execname == "<main>"/ { @[ustack(100)] = count(); }'

# 以99Hz的频率, PID是2063的进程为捕获对象, 包括用户态和核心态, 持续60s
sudo dtrace -x ustackframes=100 -n 'profile-99 /pid == 2063 && arg1/ { @[ustack()] = count(); } tick-60s { exit(0); }' -o out.user_stacks

dtrace 脚本语法参考:https://docs.oracle.com/cd/E24847_01/html/E22192/gbwaz.html#scrolltoc

生成火焰图 #

1. git clone https://github.com/brendangregg/FlameGraph
2. ./stackcollapse.pl <out.stacks> | ./flamegraph.pl > ~/Desktop/perf.svg

perf 性能分析 #

直接参考这个吧:http://linux.51yip.com/search/perf 和这个:https://blog.justforlxz.com/2020/07/21/use-perf-to-analytics-program/