topコマンドで、サーバシステムと各プロセスのモニタリングを行う
topコマンドでは、リアルタイムなシステムモニタリングを行うことが可能です。
sarコマンドやvmstatコマンドでは把握できない、プロセス単位の情報を取得できるのが特徴です。
Contents
topコマンドの実行方法
ここでは、CentOS6を前提に説明していきます。
基本的な実行方法
基本的な実行方法は下記の通りです。システムの状況が表示されます。情報の更新間隔は3秒です。
top
コマンドを終了させる方法
topコマンドを実行すると、無期限に情報を更新し続けます。終了させたい場合は、「q」ボタンを使います。
更新間隔を変更したい場合
情報の更新間隔を変更したい場合は、-dオプションを利用します。10秒間隔で更新する例を示します。
top -d10
更新回数を指定したい場合
情報の更新回数を指定したい場合は、-nオプションを利用します。6回更新する例を示します。
top -d10 -n 6
プロセスを指定したい場合
表示させるプロセスを指定したい場合は、-pオプションを利用します。
top -p 481
topコマンドの結果の見方
topコマンドを実行すると、下記のような結果を得ることができます。
top - 02:03:18 up 47 days, 23:49, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 502112k total, 484760k used, 17352k free, 113956k buffers Swap: 2150396k total, 3564k used, 2146832k free, 111404k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19232 1144 952 S 0.0 0.2 0:06.12 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:04.14 ksoftirqd/0 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0 6 root RT 0 0 0 0 S 0.0 0.0 0:04.12 watchdog/0
ヘッダ
top - 02:03:18 up 47 days, 23:49, 1 user, load average: 0.00, 0.00, 0.00
項目 | 内容 |
---|---|
02:03:18 up 47 days | 起動時間 |
23:49 | 現在時刻 |
1 user | ログインユーザ数 |
load average: 0.00, 0.00, 0.00 | ロードアベレージ 1分 5分 15分 |
ロードアベレージは、左側(1分)と右側(15分)の値のギャップが大きければ大きいほど急激に負荷があがっていることがわかります。
Tasks
Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombie
項目 | 内容 |
---|---|
82 total | 合計プロセス数 |
1 running | 起動プロセス数 |
81 sleeping | スリーププロセス数 |
0 stopped | 停止プロセス数 |
0 zombie | ゾンビプロセス数 |
Cpu(s)
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
項目 | 内容 |
---|---|
0.0%us | ユーザが利用しているCPU使用率 |
0.0%sy | システムが利用しているCPU使用率 |
0.0%ni | nice値を変更しているプロセスのCPU使用率 |
99.9%id | 待機中のCPU使用率 |
0.0%wa | IO待ちしているCPU使用率 |
0.0%hi | ハードウェア割り込みによるCPU使用率 |
0.0%si | ソフトウェア割り込みによるCPU使用率 |
0.0%st | ゲストOSが割り当て要求をしたが、割り当ててもらえなかったCPU使用率 |
Mem
Mem: 502112k total, 484760k used, 17352k free, 113956k buffers
項目 | 内容 |
---|---|
502112k total | 合計メモリ量 |
484760k used | 利用メモリ量 |
17352k free | 空きメモリ量 |
113956k buffers | 利用メモリ量のうち、バッファ利用しているメモリ量 |
Swap
Swap: 2150396k total, 3564k used, 2146832k free, 111404k cached
項目 | 内容 |
---|---|
2150396k total | 合計スワップ量 |
3564k used | 利用スワップ量 |
2146832k free | 空きスワップ量 |
111404k cached | キャッシュしているスワップ量 |
プロセス一覧
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
項目 | 内容 |
---|---|
PID | プロセスID |
USER | 実行ユーザ名 |
PR | 優先度 |
NI | nice値 |
VIRT | 仮想メモリ利用量 |
RES | 物理メモリ利用量 |
SHR | 共有メモリ利用料 |
S | プロセス状態 D = 割り込み不可能なスリープ状態 R = 実行中 S = スリープ状態 T = トレース中/停止された Z = ゾンビ |
%CPU | CPU使用率 |
%MEM | メモリ使用率 |
TIME+ | 稼働時間 |
COMMAND | 実行コマンド |
topコマンドの操作方法
top実行中にソート順や出力項目を変更することが可能です。
ソート順変更
「Ctl+o」 をおすことで、プロセス一覧のソート順を変更できます。メモリやCPUでソートすることが多いように思います。
下記画面へ遷移するので、ソートキーとしたい項目のキーをクリックします。クリックすると該当のソートキーに「*」がつきます。
エンターをおすことで元画面へ戻ることができます。
Current Sort Field: K for window 1:Def Select sort field via field letter, type any other key to return a: PID = Process Id b: PPID = Parent Process Pid c: RUSER = Real user name d: UID = User Id e: USER = User Name f: GROUP = Group Name g: TTY = Controlling Tty h: PR = Priority i: NI = Nice value j: P = Last used cpu (SMP) * K: %CPU = CPU usage l: TIME = CPU Time m: TIME+ = CPU Time, hundredths n: %MEM = Memory usage (RES) o: VIRT = Virtual Image (kb) p: SWAP = Swapped size (kb) q: RES = Resident size (kb) r: CODE = Code size (kb) s: DATA = Data+Stack size (kb) t: SHR = Shared Mem size (kb) u: nFLT = Page Fault count v: nDRT = Dirty Pages count w: S = Process Status x: COMMAND = Command name/line y: WCHAN = Sleeping in Function z: Flags = Task Flags
CPUでソートしたい場合は、「Ctl+o」でソート順変更画面へ遷移し、「K」をクリックし、エンターキーでもとに戻ります。
表示カラムの選択
「f」ボタンをおすことで、プロセス一覧の表示項目を選択することが可能です。
出力する項目には「*」がつきます。出力制御したい項目に対応するボタンを押すことで、出力有無を切り替えることが可能です。
Current Fields: AEHIOqTWKNMbcdfgjplrsuvyzX for window 1:Def Toggle fields via field letter, type any other key to return * A: PID = Process Id * E: USER = User Name * H: PR = Priority * I: NI = Nice value * O: VIRT = Virtual Image (kb) q: RES = Resident size (kb) * T: SHR = Shared Mem size (kb) * W: S = Process Status * K: %CPU = CPU usage * N: %MEM = Memory usage (RES) * M: TIME+ = CPU Time, hundredths b: PPID = Parent Process Pid c: RUSER = Real user name d: UID = User Id f: GROUP = Group Name g: TTY = Controlling Tty j: P = Last used cpu (SMP) p: SWAP = Swapped size (kb) l: TIME = CPU Time r: CODE = Code size (kb) s: DATA = Data+Stack size (kb) u: nFLT = Page Fault count v: nDRT = Dirty Pages count y: WCHAN = Sleeping in Function z: Flags = Task Flags * X: COMMAND = Command name/line
まとめ
topコマンドを利用することで、リアルタイムにサーバ状況をモニタリングすることが可能になります。
vmstatやsarとは異なり、プロセス単位で情報を見ることができます。ボトルネックになっているプロセスを調査するために必須のコマンドですので覚えておきましょう。
この記事へのコメントはこちら