火焰图
使用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/