[erlang-questions] Tool for performace evaluation

Björn-Egil Dahlberg <>
Tue May 31 14:49:53 CEST 2011


Hi,

It all depends on how detailed you want to your information to be. 
Graphical tools like etop is great to get a feel for how processes are 
doing in your system but does not get more detailed than that.

Eprof: Regarding the profiling guide, it states that *eprof* has 
"significant slowdown", this is *untrue* and should be revised. *note to 
self* It has some slowdown, (pulling some data from memory), I would say 
2 - 6 times. Eprof also has very low impact on multiple schedulers.

Eprof does not produce a callgraph but it will tell you how much time 
you spend in specific functions which is very helpful.

Percept: This application would need some work to be truly useful but it 
is great to see how saturated your system is.


- Getting closer to the metal

LCNT: If you have multiprocess scalability problems you can use LCNT 
(Lock counter) which is a special build of the beam. It is relatively 
easy to use but you need some basic understanding of thread/lock 
mechanics and the erlang runtime for the information to be really useful 
for you. A *great* thing about it LCNT is that process message 
bottlenecks will be clearly visible, as will any other lock problem. 
Some problems will be false positives though.

GPROF: Also a special build of the beam. This is what I use to get the 
feel of a specific performance problem i erts or to benchmark a new 
feature in erts that I've been working on. Gprof will give a callgraph 
on the erts internals but all erlang code time will obviously wend up in 
the process_main function in beam_emu. This feature is mostly helpful 
for erts development but it also might point to some poor programming 
practices in your code. Using some scripts you can easily get some nice 
graphs that you with an overview and that you can send to other people:
gprof  $binary $gmon | gprof2dot.py | dot -Tpng -o $png

Regards,
Björn-Egil
Erlang/OTP

On 2011-05-23 14:49, Ahmed Omar wrote:
> Your question sounds too vague :) but quick hints :
> 1) Monitoring tools :
> etop
> http://www.erlang.org/doc/man/etop.html
> ntop
> https://github.com/esl/entop
>
> 2) Profiling guide
> http://www.erlang.org/doc/efficiency_guide/profiling.html

> 3) Concurrency profiling tool
> http://www.erlang.org/doc/apps/percept/percept_ug.html

>> From: "Muhammad Yousaf"<>
>> Is there any tools to evaluate the performance of a module in Erlang that
>> can show graphical interface for time elapse, memory usage, performance
>> benchmarks etc ??



More information about the erlang-questions mailing list