火焰图的学习与使用

以nodejs 为例,学习火焰图相关。

node –perf-basic-prof-only-functions demo.js&

perf record -F 99 -p pgrep -n node -g – sleep 30

perf script > nodestacks

./stackcollapse-perf.pl < ../nodestacks | ./flamegraph.pl –colors js > ../node-flamegraph.sv

1.如何生成火焰图
即如何实现数据可视化。 -- 数据,可视化。

函数本身提供符号的解析。(可视化)
由perf工具定时去抓取调用栈的数据。(数据源)
统计调用次数,生成火焰图。(可视化)


2.如何分析火焰图

示例如下:
在外层一共调用了 d, e, f 几个方法,其中d-b-a,e-b-a,f-c-a为调用链,
f 就是需要我们优化的“平顶山”,即占用了较多的cpu时间。

[d][ e ][  f  ]
[  b   ][  c  ]
[      a      ]

等到有具体的使用心得,再做进一步的更新。