etop の 使い方
GUI ベースの etop = getop
Erlang には 指定ノードに於ける (Erlang) プロセス毎の状態を表示してくれるベンリツール etop があります。
丁度 UNIX コマンドの top のようなものです。
getop という GUI ベースの実装も提供されています。
場所
etop、getop は
/usr/lib/erlang/lib/observer-0.9.7.4/priv/bin/
あたりにあると思います。
PATH を通しておくと便利です。
起動方法
監視対象のノードを起動します。ノードの命名を忘れずに。
$erl -name 'hoge@localhost'
次に etop を起動します。監視対象のノードの指定を忘れずに。
$etop -node 'hoge@localhost'
etop を起動したところ。デフォルトだと 5 秒毎に更新される
おお。起動しましたね!
getop も同じ方法で OK です。
画面の見方
- Load
- cpu は Runtime/Wallclock を表します
- procs はノード上のプロセス数を表します
- runq は実行可能なプロセス数を表します
- Memory
- 割当てられたメモリの大きさを表します
- 単位は KB です
- Time
- プロセスの runtime を表します
- Reds
- プロセスが実行中の reduction*1 の数を表します
- Memory
- process_info(Pid,memory) によって得られるプロセスのサイズを表します
- MsgQ
- メッセージキューのサイズを表します (メールボックスに入っている ≒ まだ処理されていないメッセージの数)
オプション
下記のパラメータが使用可能です。起動後にも etop:config(Key, Value) で変更可能です。
また、 getop の場合は GUI ベースで設定の変更が可能ですヨ。
- lines
- 表示するプロセス数を指定します
- Value: integer()
- Default: 10
- interval
- プロセス状態の再描画間隔を指定します。単位は秒です。
- Value: integer()
- Default: 5
- accumulate
- sort
- 並び替えの基準を指定します
- Value: runtime | reductions | memory | msg_q
- Default: runtime (reductions if tracing=off)
まとめ
結構便利です。etop。眺めてるだけでニヤニヤできます。
妙にメモリ食ってるプロセスや、メールボックスにメッセージが溜ってるプロセスがいたら注目します。
% etop -node 'hoge@localhost' -interval 1 -lines 200 -tracing off > hoge.log
とかでログを取りつつ
% tail -f hoge.log
として眺めることが結構あります。