WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

topコマンドの使い方・見方

      2012/11/27

topコマンドとは?

topコマンドはサーバの稼働状況を確認するためのコマンドです。
topコマンドではCPUやメモリの利用率やプロセスの稼働状況などを一定時間間隔でリアルタイムに確認することができます。

topコマンドの見方

百聞は一見にしかず。まずはtopコマンドを実行してみましょう。

# top
top - 20:00:27 up 2 days,  2:19,  6 users,  load average: 0.58, 0.56, 0.54
Tasks:  60 total,   1 running,  59 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.9%us,  0.9%sy,  0.0%ni, 95.3%id,  1.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3145728k total,   557468k used,  2588260k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1663 apache    15   0  315m  15m 9040 S  2.0  0.5   0:23.69 httpd
 5172 apache    15   0  313m  14m 8584 S  2.0  0.5   0:21.50 httpd
21589 apache    15   0  315m  15m 9324 S  2.0  0.5   0:36.89 httpd
22049 apache    15   0  315m  15m 9324 S  2.0  0.5   1:03.66 httpd
25624 apache    16   0  315m  15m 9316 S  2.0  0.5   0:32.87 httpd
28576 apache    15   0  313m  14m 8308 S  2.0  0.5   0:02.95 httpd
15665 apache    15   0  313m  14m 8592 S  1.7  0.5   0:42.57 httpd
17659 apache    15   0  313m  14m 8592 S  1.7  0.5   0:41.13 httpd
24487 apache    15   0  313m  14m 8592 S  1.7  0.5   0:33.58 httpd
 2019 apache    15   0  315m  15m 9336 S  1.3  0.5   0:22.88 httpd
23954 apache    15   0  313m  14m 8592 S  1.3  0.5   0:34.34 httpd
30337 apache    15   0  313m  14m 8592 S  1.3  0.5   0:01.87 httpd
 1808 mysql     18   0  624m 185m 7208 S  1.0  6.0  11:04.96 mysqld
    1 root      15   0 10364  728  612 S  0.0  0.0   0:00.04 init
 1173 root      22   0 28620  592  472 S  0.0  0.0   0:00.00 brcm_iscsiuio
 1453 root      15   0  5924  664  536 S  0.0  0.0   0:00.03 syslogd
 1456 root      25   0  3820  424  340 S  0.0  0.0   0:00.00 klogd
 1487 rpc       18   0  8068  608  484 S  0.0  0.0   0:00.00 portmap
 1510 rpcuser   15   0 11068  788  656 S  0.0  0.0   0:00.00 rpc.statd
 1543 dbus      22   0 21272  692  488 S  0.0  0.0   0:00.00 dbus-daemon
 1561 root      15   0 62644 1216  652 S  0.0  0.0   0:00.10 sshd
 1573 root      18   0 21660  932  712 S  0.0  0.0   0:00.00 xinetd
 1584 root      18   0 44284  648  260 S  0.0  0.0   0:00.00 vsftpd
 1596 root      18   0 10780 1320 1056 S  0.0  0.0   0:00.00 mysqld_safe
 1837 root      15   0  6068  616  472 S  0.0  0.0   0:00.11 dovecot
 1838 root      15   0 61612 2428 1800 S  0.0  0.1   0:00.08 dovecot-auth
 1890 root      15   0 54252 2276 1752 S  0.0  0.1   0:00.02 master
 1895 postfix   18   0 54376 2356 1824 S  0.0  0.1   0:00.00 qmgr
 1915 root      18   0 19724 1152  584 S  0.0  0.0   0:00.00 crond
 1939 root      21   0 46752  804  416 S  0.0  0.0   0:00.00 saslauthd
 1940 root      18   0 46752  544  156 S  0.0  0.0   0:00.00 saslauthd 

topコマンドを実行すると、このようにかなりの情報が出力されます。

情報量が多すぎて何がなんだかわかりませので、それぞれの項目の意味をひとつずつ確認していきましょう。

1行目 top 〜

top - 20:00:27 up 2 days,  2:19,  6 users,  load average: 0.58, 0.56, 0.54

topコマンドの1行目は稼働時間やロードアベレージなどの情報を表示する部分です。

それぞれの項目とその意味は下表のようになっています。

項目 意味
20:00:27 現在時刻(20時00分27秒)
up 2 days, 2:19 稼働時間(2日と2時間19分稼働中)
6users ログインユーザ数(6ユーザがログイン中)
ロードアベレージ 左から「過去1分」「過去5分」「過去15分」

つまり、この1行目はuptimeコマンドの実行結果と同じです。

2行目 Tasks:〜

Tasks:  60 total,   1 running,  59 sleeping,   0 stopped,   0 zombie

2行目は現存するタスクの状態を表示する部分です。

項目 意味
total タスクの合計数
running 稼働中のタスク数
sleeping 待機中のタスク数
stopped 停止タスク数
zombi ゾンビタスク数

ゾンビは、処理は完了したがメモリから消去されていないタスクを意味します。

3行目 Cpu(s):〜

Cpu(s):  1.9%us,  0.9%sy,  0.0%ni, 95.3%id,  1.9%wa,  0.0%hi,  0.0%si,  0.0%st

3行目はCPUの使用率についての情報になります。CPUの利用についての情報を占有時間の割合で表示しています。

項目 意味
us ユーザプロセスの使用時間
sy システムプロセスの使用時間
ni 実行優先度を変更したユーザプロセスの使用時間
id アイドル状態の時間
wa I/Oの終了待ちをしている時間
hi ハードウェア割込み要求での使用時間
si ソフトウェア割込み要求での使用時間

4行目 Mem:〜

4行目は物理メモリの使用状況についての情報です。

項目 意味
total メモリの合計容量
used 使用中のメモリ容量
free 未使用のメモリ容量
buffers バッファに使用されているメモリの容量

freeコマンドを実行したときのような感じとなります。

5行目 Swap:〜

5行目はスワップ領域の使用状況についてです。

項目 意味
total スワップ領域の合計量
used 使用中のスワップ領域
free 未使用のスワップ領域
cached キャッシュされているスワップ領域

6行目以下

6行目からは実行中のプロセス(タスク)の詳細表示になります。

項目 意味
PID プロセスID
USER プロセスを実行しているユーザ
PR プロセスの優先度
NI ナイス値(相対的優先度)-20(最高)~19(最低)
VIRT プロセスの仮想メモリサイズ(スワップアウトしたメモリ使用量を加えたメモリ量)
RES プロセスが使用している物理(スワップされていない)メモリサイズ
SHR プロセスが使用している共有メモリ
S プロセスの状態
%CPU CPU使用率
%MEM 実メモリ使用率
TIME+ プロセスの実行時間(秒)
COMMAND 現在実行中のコマンド名

psコマンドを実行したときのような感じとなります。

“プロセスの状態”は大文字のアルファベット一文字で表されますが、その意味は以下のとおりです。

S スリープ状態
T 停止中
D 割り込み不可(sleep)
N ナイス値がプラスの状態
< ナイス値がマイナスの状態
R 実行中
Z ゾンビ状態
W スワップアウト状態

 - Linux ,