4. Erlang Top

4 Erlang Top

4.1介绍

Erlang Top,etop是一个用于呈现有关Erlang进程的信息的工具,类似于topUNIX中提供的信息。

4.2开始

以下列任何一种方式启动ErlangTop:

  • 使用脚本etop

  • etop.bat例如,使用批处理文件etop -node tiger@durin

4.3输出

ErlangTop的输出如下:

======================================================================================== tiger@durin 13:40:32 Load: cpu 0 Memory: total 1997 binary 33 procs 197 processes 0 code 173 runq 135 atom 1002 ets 95 Pid Name or Initial Func Time Reds Memory MsgQ Current Function ---------------------------------------------------------------------------------------- <127.23.0> code_server 0 59585 78064 0 gen_server:loop/6 <127.21.0> file_server_2 0 36380 44276 0 gen_server:loop/6 <127.2.0> erl_prim_loader 0 27962 3740 0 erl_prim_loader:loop <127.9.0> kernel_sup 0 6998 4676 0 gen_server:loop/6 <127.17.0> net_kernel 62 6018 3136 0 gen_server:loop/6 <127.0.0> init 0 4156 4352 0 init:loop/1 <127.16.0> auth 0 1765 1264 0 gen_server:loop/6 <127.18.0> inet_tcp_dist:accept 0 660 1416 0 prim_inet:accept0/2 <127.5.0> application_controll 0 569 6756 0 gen_server:loop/6 <127.137.0> net_kernel:do_spawn_ 0 553 5840 0 dbg:do_relay_1/1 ========================================================================================

标题包括一些系统信息:

Loadcpu

Runtime/Wallclock,即节点活动时间的百分比。

procs

节点上的进程数。

runq

可以运行的进程数。

Memory

节点分配的内存(以千字节为单位)。

为每个过程提供了下列信息:

Time

进程的运行时,即进程已排定的时间。

Reds

在此过程中执行的削减数。

Memory

进程的大小,以字节为单位,通过调用获得process_info(Pid,memory)

MsgQ

进程的消息队列长度。

TimeReds可以显示为累计值或自上次更新以来的值。

4.4配置

所有配置参数都可以在开始时通过添加-OptName Value到命令行来设置,例如:

% etop -node tiger@durin -setcookie mycookie -lines 15

模块中提供了所有有效的Erlang Top配置参数的列表etop

参数linesintervalaccumulate,并且sort可以用功能运行时改变etop:config/2

例子:

改变配置参数lines基于文本的演示文稿。在修改之前,10行如下:

======================================================================================== tiger@durin 10:12:39 Load: cpu 0 Memory: total 1858 binary 33 procs 191 processes 0 code 173 runq 2 atom 1002 ets 95 Pid Name or Initial Func Time Reds Memory MsgQ Current Function ---------------------------------------------------------------------------------------- <127.23.0> code_server 0 60350 71176 0 gen_server:loop/6 <127.21.0> file_server_2 0 36380 44276 0 gen_server:loop/6 <127.2.0> erl_prim_loader 0 27962 3740 0 erl_prim_loader:loop <127.17.0> net_kernel 0 13808 3916 0 gen_server:loop/6 <127.9.0> kernel_sup 0 6998 4676 0 gen_server:loop/6 <127.0.0> init 0 4156 4352 0 init:loop/1 <127.18.0> inet_tcp_dist:accept 0 2196 1416 0 prim_inet:accept0/2 <127.16.0> auth 0 1893 1264 0 gen_server:loop/6 <127.43.0> ddll_server 0 582 3744 0 gen_server:loop/6 <127.5.0> application_controll 0 569 6756 0 gen_server:loop/6 ========================================================================================

etop:config/2调用函数将显示的行数改为5:

> etop:config(lines,5). ok

更改后,5行显示如下:

(etop@durin)2> ======================================================================================== tiger@durin 10:12:44 Load: cpu 0 Memory: total 1859 binary 33 procs 192 processes 0 code 173 runq 2 atom 1002 ets 95 Pid Name or Initial Func Time Reds Memory MsgQ Current Function ---------------------------------------------------------------------------------------- <127.17.0> net_kernel 183 70 4092 0 gen_server:loop/6 <127.335.0> inet_tcp_dist:do_acc 141 22 1856 0 dist_util:con_loop/9 <127.19.0> net_kernel:ticker/2 155 6 1244 0 net_kernel:ticker1/2 <127.341.0> net_kernel:do_spawn_ 0 0 5840 0 dbg:do_relay_1/1 <127.43.0> ddll_server 0 0 3744 0 gen_server:loop/6 ========================================================================================

4.5打印到文件

在任何时候,当前的Erlang Top显示器都可以转储到带有功能的文本文件中etop:dump/1

4.6 Stop

要停止Erlang Top,请使用函数etop:stop/0