Erlang中的Callstack采样

时间:2017-02-15 10:05:03

标签: erlang profiling

我目前正在调查大型Erlang应用程序中的性能问题。该应用程序的CPU负载大于预期。为了首先掌握系统的哪些部分负责负载,我想按照this answer中的描述执行callstack采样。

有没有比重复调用erlang:process_info(Pid, backtrace)并从该输出中获取函数更好的方法呢?

请注意,系统太大而无法使用fprof,并且etop也未指向正确的方向。目前还不能仅将fprof用于系统的某些部分,因为我首先需要指出性能问题的一般位置。

1 个答案:

答案 0 :(得分:1)

获取堆栈实际大小的简单方法是ax.legend([0.5]+[['0.0%', '100.0%'], ['10.0%', '90.0%'], ['30.0%', '70.0%']]) 。虽然这只能用单词返回堆栈的大小,但它是一种非常简单有效的方法,可以查看哪些进程有大量堆栈。