[erlang-questions] Tool for performace evaluation
Björn-Egil Dahlberg
egil@REDACTED
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"<muhammad.yousaf@REDACTED>
>> 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