topコマンドで、サーバシステムと各プロセスのモニタリングを行う

 

topコマンドでは、リアルタイムなシステムモニタリングを行うことが可能です。

sarコマンドやvmstatコマンドでは把握できない、プロセス単位の情報を取得できるのが特徴です。

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とは異なり、プロセス単位で情報を見ることができます。ボトルネックになっているプロセスを調査するために必須のコマンドですので覚えておきましょう。

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。