[erlang-questions] top(1) in Erlang

Taavi Talvik <>
Mon Sep 17 19:01:11 CEST 2007


On Sep 17, 2007, at 7:00 PM, David King wrote:

> I'm trying to write a process monitor akin to Unix's top(1) for
> Erlang processes. Is there any way to determine how long a given
> process spent with the CPU over the last X units of time? The
> scheduler has to know this, does it expose that information? Does
> something like this already exist that I'm missing?
>
> erlang:process_info/1 returns the following for a given process:
>
>    [{current_function,{hipe_icode_coordinator,coordinate,4}},
>     {initial_call,{erlang,apply,2}},
>     {status,waiting},
>     {message_queue_len,0},
>     {messages,[]},
>     {links,[]},
>     {dictionary,[]},
>     {trap_exit,false},
>     {error_handler,error_handler},
>     {priority,normal},
>     {group_leader,<0.30.0>},
>     {heap_size,6765},
>     {stack_size,6},
>     {reductions,8193},
>     {garbage_collection,[{fullsweep_after,65535}]}]
>
> Is reductions close to what I want? Will that increment for things
> other than function calls? Does that matter?

Yes, reductions is what you want.

Btw, you can look at http://www.erlang.org/doc/apps/observer/ 
part_frame.html
and "Erlang Top" from there;)

And ../runtime_tools/src/observer_backend.erl

best regards,
taavi





More information about the erlang-questions mailing list