概述

不谈profile tools的重要性. erlang profile一定要看看下面这篇.
http://erlang.org/doc/efficie...
这篇blog记录一些实操.

步骤

fprof采集数据

在程序中, 或者直接remote_console触发采集.

:fprof.trace([:start, {:procs, :erlang.processes()}])
# 一段时间后, 注意不要在线上采集, fprof时对性能影响最大的profile方式, 也有最全的信息
:fprof.trace(:stop)

不传递参数情况下, 默认会将fprof信息写入fprof.trace文件.

使用kcachegrind 查看fprof的结果

使用erlgrind转化为callgrind格式

~/install » wget https://raw.githubusercontent.com/isacssouza/erlgrind/master/src/erlgrind
~/install » chmod a+x erlgrind                             
~/install » sudo mv erlgrind /usr/local/bin
~/platform/xxxxx(xxxx*) » erlgrind fprof.trace
Reading trace data...
..................................................
.................................................,
..................................................
.................................................,
..................................................
.................................................,
..................................................
..............................
End of trace!
Processing data...
Creating output...
Done!

安装kcachegrind

可以直接用包管理器安装

sudo apt-get install -y kcachegrind
~/platform/xxxxx(xxxxx*) » kcachegrind xxx.cgrind

效果如图:
image.png

flame graph

fprof不支持生成火焰图,参考
https://interscity.org/assets...
https://github.com/rabbitmq/l...
https://github.com/proger/eflame

参考

http://erlang.org/doc/efficie...
http://blog.equanimity.nl/blo...


enjolras1205
77 声望9 粉丝

引用和评论

1 篇内容引用
0 条评论