topコマンドについて

目次

どんなサービスでもサーバーの負荷については悩ましい問題が多いかと思われます。
どのプロセスが重いか死んでるプロセスが無いかなどので状況を確認するのに便利なコマンドで「top」コマンドというのがありますので今回まとめさせていただきます。

topコマンドとは

現在実行中のプロセスの負荷状況や実行時間などを確認できる便利なコマンドです。

実行結果はこちら

様々なプロセスが立ち動作していますね!
今回は共用サーバで実行したため凄い数のプロセス数になっております!
では一番上の列から説明していきます。

load average(1列目)

システム全体の負荷状況を表す指標が確認できる

load averageについては他にもuptime/wコマンドがあります

●uptime

システムの稼働時間を見るコマンド

●w

サーバーに誰がログインしているかと、何を実行しているかを確認できる

Tasks(2列目)

各タスクの状態を数値で確認できる

  • total : 合計のタスク数
  • running : 稼働中のタスク数
  • sleeping : 待機中のタスク数
  • stopped : 停止中のタスク数
  • zombie : ゾンビのタスク数

※ ゾンビプロセスとは、プロセスが既に終了しており実態は消滅しているのに、
プロセステーブルに残ってしまっている状態のことを指します。

CPU(3列目)

  • us : ユーザプロセスの実行された時間のパーセンテージ
  • sy : システムプロセスの使用時間のパーセンテージ
  • ni : nice等の実行優先度を変更したプロセス使用時間のパーセンテージ
  • id : アイドル状態のプロセス時間のパーセンテージ
  • wa : I/Oの終了待ちをしていたプロセス時間のパーセンテージ
  • hi : ハードウェアの割込み要求での使用時間のパーセンテージ
  • si : ソフトウェアの割込み要求での使用時間のパーセンテージ
  • st : OS仮想化利用時に他のCPUの実行時間のパーセンテージ

Memory(4列目)

物理メモリの使用状況の確認

  • total : 物理メモリの総容量
  • free : 物理メモリの空き容量
  • used : 物理メモリの使用容量
  • buff/cache :バッファやキャッシュ(ファイルキャッシュ)として使用しているメモリ量
    →他アプリでメモリが必要となった場合はこの領域が使われる
    ようはメモリ空いてるから使うけど、他で使うことになったら解放して使えるようにしますね!
    的な解釈でいいかと思います。

Swap Memory(5列目)

スワップ領域の使用状況の確認

  • total : スワップ領域の総容量
  • free : スワップ領域の空き容量
  • used : スワップ領域の使用容量
  • avail Mem : こちらはswap memoryの列に記載されていて紛らわしいのですが
    swapとは関係なくキャッシュなどを解放することで利用可能なメモリ量

プロセス

  • PID(Process ID): タスクの一意なプロセスID

  • USER : タスクの実効ユーザー名

  • PR(Priority): タスクの優先度で高い数値ほど優先される。rt(real time)となっている場合は 最優先で実行

  • NI(Nice value): タスクのnice値。負のnice 値は高い優先度を意味し、正のnic 値は低い優先度を意味する

  • VIRT(Virtual Image): タスクが使用している仮想メモリの総量。スワップも含む

  • RES(Resident Memory Size):スワップを含まない、物理メモリの消費量

  • SHR(Shared Mem size):タスクが利用している共有メモリの総量

  • S(Process Status):
    ・D:割り込み不可能なスリープ状態
    ・R:実行中
    ・S:スリープ状態
    ・T:トレース中/停止された
    ・Z:ゾンビ

  • %CPU : 前回の更新(topのリロード前後の差分)からの、タスクの所要 CPU 時間の占有率。 総 CPU 時間のパーセンテージで表される

  • %MEM : タスクが現在使用している利用可能な物理メモリの占有率。

  • TIME+ : タスクが開始してから利用した CPU 時間の総計

  • COMMAND : タスクを開始するのに使ったコマンドライン、 またはタスクに関連づけられたプログラムの名前を表示

その他

●c(コマンドの詳細情報表示)

COMMANDの詳細を確認する場合は[c]を実行すると詳細な実行コマンドが表示されます。
バッチ処理なども省略して表示されていると何のバッチが動いているのかが
分からないのですが、詳細情報にすると実際実行されたコマンドが表示されるのでお勧めです。

●L(文字列を検索)

プロセス内にあるワード全てに対して文字列検索できます

●u(ユーザー名を検索)

プロセス内のUSERを検索できます

●k(プロセスを終了)

プロセスを終了させるコマンドにkillコマンドがありますが
それをTOPコマンドで表示中に実行できます。

●Shift + p, Shift + m, Shift + r, <, >(ソート関連)

  • Shift + p(デフォルトの表示順はこちら)
    CPU使用率でソートする

  • Shift + m
    メモリ使用率でソートする

  • Shift + r
    現在ソートしている項目の、昇順降順を切り替える


  • 現在ソートしている左の列をソートする


  • 現在ソートしている右の列をソートする

●1(コア数ごとの使用率)

%Cpu(s)は複数のコアを1つにまとめて表示されているので
1つ1つのCPUの状態を確認する場合に使用できます。

topコマンドはサーバー負荷で見るのに大事になるので
意味合いは覚えていきたいところですね!

ありがとうございました!