概要
top
コマンドは、Linux システムのリソース使用状況をリアルタイムで監視するためのツールです。この記事では、top
コマンドの基本的な使い方と、出力結果の各部分について詳しく解説します。
top コマンド
top
コマンドは、リアルタイムでシステムのリソース使用状況を表示するためのツールです。
q
または Ctrl + c
を押すと終了します。
出力の見方
以下は、top
コマンドの出力の各部分についての説明です:
top - 02:45:17 up 22 days, 1:04, 2 users, load average: 0.00, 0.01, 0.00
Tasks: 332 total, 1 running, 331 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15919.4 total, 234.8 free, 5974.1 used, 9710.5 buff/cache
MiB Swap: 2048.0 total, 2017.0 free, 31.0 used. 9594.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2446 ubuntu 20 0 1428640 175812 79888 S 0.7 1.1 334:37.46 teams
217464 ubuntu 20 0 75.8g 1.2g 62796 S 0.7 7.8 10:08.47 node
939 root 20 0 1787944 30460 14040 S 0.3 0.2 62:36.81 containerd
1421 root 20 0 710776 8728 6172 S 0.3 0.1 2:56.92 containerd-shim
1466 root 20 0 0 0 0 S 0.3 0.0 130:54.35 nv_queue
208231 ubuntu 20 0 11.2g 76196 44900 S 0.3 0.5 6:06.35 node
217435 ubuntu 20 0 45916 17300 11712 S 0.3 0.1 1:40.53 code-cd4ee3b1c3
ヘッダー情報
top - <現在の時刻> up <稼働時間>, <ログイン中のユーザー数>, load average: <ロードアベレージ>
例:
top - 02:45:17 up 22 days, 1:04, 2 users, load average: 0.00, 0.01, 0.00
- 現在の時刻
- 稼働時間: システムが再起動してからの稼働時間
- ログイン中のユーザー数
- ロードアベレージ
タスク
タスクとは、システム上のプロセスの状態に関する項目です。
Tasks: 332 total, 1 running, 331 sleeping, 0 stopped, 0 zombie
- total: すべてのプロセスの合計数。ここには実行中、スリープ中、停止中、およびゾンビ状態のプロセスが含まれます。
- running: 現在、CPU を使用している実行状態のプロセスの数。
- sleeping: CPU での実行を待機しているスリープ状態のプロセスの数。
- stopped: 停止されたプロセスの数。通常、
kill -STOP
コマンドで停止されたプロセスが該当します。 - zombie: ゾンビ状態のプロセスの数。ゾンビプロセスとは、終了したが、親プロセスが終了ステータスをまだ回収していないプロセスを指します。ゾンビプロセスはシステムリソースを消費しないものの、プロセス ID (PID) を占有します。
CPU 使用率
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- us: ユーザー空間 (User Space) での CPU 使用率
- sy: システム空間 (System Space) での CPU 使用率
- ni: ナイス値 (Nice) が変更されたプロセスの CPU 使用率
- id: アイドル状態 (Idle) の CPU 使用率
- wa: 入出力待ち状態 (Wait) の CPU 使用率
- hi: ハードウェア割り込み処理 (Hardware Interrupt) の CPU 使用率
- si: ソフトウェア割り込み処理 (Software Interrupt) の CPU 使用率
- st: 仮想マシンのステール時間 (Steal Time)
メモリ使用率
MiB Mem : 15919.4 total, 234.8 free, 5974.1 used, 9710.5 buff/cache
- 1. total: 総メモリ量 (MiB)
- 2. free: 空きメモリ量 (MiB)
- 3. used: 使用メモリ量 (MiB)
- 4. buff/cache: バッファおよびキャッシュとして使用されているメモリ量 (MiB)
スワップ領域使用率
MiB Swap: 2048.0 total, 2017.0 free, 31.0 used. 9594.0 avail Mem
- total: 総スワップ領域 (MiB)
- free: 空きスワップ領域 (MiB)
- used: 使用中のスワップ領域 (MiB)
- avail Mem: 使用可能なメモリ量 (MiB)
プロセス情報
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- PID: プロセス ID (Process Id)
- USER: プロセスを実行しているユーザー (User)
- PR: プロセスの優先度 (Priority)
- NI: ナイス値 (Nice)
- VIRT: 仮想メモリ使用量 (Virtual Memory) (KiB)
- RES: 実際のメモリ使用量 (Resident Memory) (KiB)
- SHR: 共有メモリ使用量 (Shared Memory) (KiB)
- S: プロセスの状態 (Status) (
S
: スリープ状態 (Sleep)、R
: 実行状態 (Running)、Z
: ゾンビ状態 (Zombie)) - %CPU: CPU 使用率 (CPU Usage)
- %MEM: メモリ使用率 (Memory Usage)
- TIME+: プロセスの累積 CPU 時間 (Cumulative CPU Time)
- COMMAND: 実行中のコマンド名 (Command)
用語
ロードアベレージ
ロードアベレージ (Load Average) とは、uptime
コマンドや top
コマンドで確認できる 3 つの数字で表される一定期間におけるシステムの負荷状況を示します。数値が低いほど良く、高い場合は問題や過負荷を示します。
値は、CPU の論理コアの数を N としたとき、N より小さい場合は負荷が少なく、N より大きい場合は過負荷で、プロセスがキューに並んで待っている状態を表します。
- 3 つの数字の意味
- 1 分あたりの平均: 短期的な負荷を示す
- 5 分の平均: 中期的な負荷を示す
- 15 分の平均: 長期的な負荷を示す
確認には以下のコマンドを実行します:
$ uptime
17:14:46 up 29 days, 34 min, 6 users, load average: 0.07, 0.02, 0.00
$ top
top - 17:15:18 up 29 days, 34 min, 6 users, load average: 0.04, 0.01, 0.00
ユーザー空間
ユーザー空間とは、ユーザーが直接操作するプログラムやライブラリが実行される領域です。
システム空間
システム空間とは、Linux カーネル自身が動作する領域で、ハードウェアの管理、プロセス管理、メモリ管理などのシステム全体に関わる処理が行われます。
アイドル状態
CPU が稼働していない状態を指します。
ナイス値
ナイス値 (Nice) は、プロセスの優先度を示す値のことです。ナイス値が低いほどプロセスの優先度は高くなり、逆にナイス値が高いと優先度が低くなります。デフォルトでは多くのプロセスはナイス値 0 で起動され、ユーザーは nice
コマンドや renice
を使用してナイス値を変更することで、プロセス実行の優先順位を調整することができます。
以下は「nice」コマンドを使って、プログラムのナイス値を変更する例です。
# 優先度を10に設定してプログラムを実行する例
nice -n 10 ./my_program
また、既に実行中のプロセスのナイス値を変更するには「renice」コマンドを使用します。
# プロセス ID 1234 のプロセスを優先度 -5 に変更する例
sudo renice -n -5 -p 1234
入出力待ち状態
入出力待ち (I/O wait) とは、CPU が入出力操作 (ディスク、ネットワーク、その他のデバイス操作) の完了を待っている状態
ハードウェア割り込み
キーボードやマウス、ネットワークカード、ハードディスクなどの物理デバイスが、動作中に何らかのイベントを検知した際に CPU に通知を送る仕組みです。
ソフトウェア割り込み
ソフトウェア割り込みは、ソフトウェアが意図的に割り込みを発生させることで、CPU が特定の処理 (たとえば、システムコールや例外処理) を実行するよう促すものです。これにより、ユーザープログラムからカーネルモードの処理への移行が行われ、システムコールや割り込み処理が実現されます。
ステール時間
ステール時間 (Steal Time) は、仮想化環境において、仮想マシンが実行可能状態にあるにもかかわらず、物理 CPU がハイパーバイザーによって別のタスク (他の仮想マシンなど) のために使用されており、その結果として実行に割り当てられなかった待ち時間を指します。これは仮想マシンのパフォーマンスに影響し、割り当てられている CPU リソースの実際の使用可能性を低下させる原因となります。
使用メモリ量
システム全体で割り当てられている物理メモリのうち、使用中または予約されている量です。
空きメモリ量
空きメモリ量とは、すぐに利用可能な未使用の物理メモリの量を示します。
キャッシュメモリ量
頻繁にアクセスされるデータやプログラムコードを一時的に保存するために利用するメモリ領域で、システムのパフォーマンス向上に寄与します。
仮想メモリ
仮想メモリは、物理メモリ (RAM) とディスク上の領域 (スワップ領域やその他のファイル) を組み合わせ、各プロセスが大きなアドレス空間を持つように見せる仕組みです。
コメント