perf.data生成火焰图
用perf或者别的东西生成perf.data后,可以用如下方法生成火焰图:
先把https://github.com/brendangregg/FlameGraph.git clone到目录$FlameGraphPath
,然后
perf script -i perf.data > perf.unfold
$FlameGraphPath/stackcollapse-perf.pl perf.unfold > perf.folded
perf.unfold
可能会比perf.data
大将近十倍。所以一般是直接pipe进stackcollapse-perf.pl
:
perf script -i perf.data | $FlameGraphPath/stackcollapse-perf.pl > perf.folded
$FlameGraphPath/flamegraph.pl perf.folded > perf.svg
注意,解析perf.data
的时候好像要读取binary里的符号,所以在解析的时候不要重新编译之类的。
如果嫌perl写的stackcollapse-perf.pl
太慢的话,可以尝试rust写的inferno
: https://docs.rs/inferno/latest/inferno/
cargo install inferno
perf script -i perf.data | inferno-collapse-perf > perf.folded
# 默认太宽了。perl版本的宽度是1200,所以这里也设置成1200
inferno-flamegraph --width=1200 < perf.folded > perf.svg
实测比perl版本快大约4倍。不过生成的perf.svg
字太小了。可以用inferno
生成perf.folded
,再用flamegraph.pl
来画火焰图:
cargo install inferno
perf script -i perf.data | inferno-collapse-perf > perf.folded
$FlameGraphPath/flamegraph.pl perf.folded > perf.svg
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏