首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

4. Erlang Top

4.1介绍

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

4.2开始

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

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

4.3输出

ErlangTop的输出如下:

代码语言:javascript
复制
========================================================================================
 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到命令行来设置,例如:

代码语言:javascript
复制
% etop -node tiger@durin -setcookie mycookie -lines 15

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

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

例子:

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

代码语言:javascript
复制
========================================================================================
 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:

代码语言:javascript
复制
> etop:config(lines,5).
ok

更改后,5行显示如下:

代码语言:javascript
复制
(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

扫码关注腾讯云开发者

领取腾讯云代金券