Linuxパフォーマンス解析用topコマンドの詳細説明
概要
top コマンドは、Linux でよく使用されるパフォーマンス分析ツールで、システム内の各プロセスのリソース使用状況をリアルタイムに表示でき、Windows システムのタスク マネージャーに似た機能を備えています。
top コマンドはシステムの負荷を動的に表示することができます。この記事では、top コマンドのあらゆる側面を詳しく紹介します。
共通パラメータ
top コマンドはいくつかのパラメータをサポートしています。一般的に使用されるパラメータを次に示します。
- -d: リフレッシュ頻度を設定します。
- -n: 更新回数を設定します。
- -p: 指定したプロセスに関する情報を表示します。
- -u: 指定したユーザーのプロセス情報を表示します。
- -o: ソートフィールドを指定します。
- -h: ヘルプ情報を表示します。
プロセス情報を 2 秒ごとに 10 回だけ更新して表示します。
top -d 2 -n 10
指定したユーザー root のプロセス情報を表示します。
top -u root
指定されたプロセス ID 123 の情報を表示します。
top -p 123
メモリ使用量で並べ替えます。
top -o %MEM
先頭のコマンドの内容
通常top
コマンドの出力は次のとおりです。これには、CPU、メモリ、システム タスクなど、データのさまざまな側面が含まれています。
top - 10:32:42 up 38 min, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 237 total, 1 running, 236 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.4 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st
MiB Mem : 3635.0 total, 3229.8 free, 441.0 used, 170.1 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3194.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1461 root 20 0 7252 3672 3280 S 0.7 0.1 0:00.03 bash
1621 root 20 0 10700 4360 3476 R 0.7 0.1 0:00.05 top
1477 root 20 0 0 0 0 I 0.3 0.0 0:00.01 kworker/0:0-events
1 root 20 0 103372 12748 9724 S 0.0 0.3 0:02.18 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 slub_flushwq
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri
10 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:1H-events_highpri
11 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
13 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_kthre
先頭のコマンドのデータを 1 行ずつ見てみましょう。
最初の行は、実際にはシステムの起動時間とシステムの平均負荷を表しています。
top - 10:32:42 up 38 min, 2 users, load average: 0.00, 0.00, 0.00
top - 10:32:42 up 38 min
は、現在のシステム時間が10:32:42
、マシンが起動している38 min
ことを意味します。 2 users
は、現在 2 人のユーザーがログインしていることを意味します。 load average: 0.00, 0.00, 0.00
は、過去 5 分間、10 分間、15 分間のシステムの平均負荷を表します。
ここで、平均負荷は CPU 使用率を表すものではないことに注意してください。簡単に言えば、平均負荷は、システムがユニット内で動作状態中断不可能な状態にあるプロセスの平均数、つまりアクティブなプロセスの平均数プロセス< a i=8>。
いわゆる実行可能状態と中断不可能な状態とは、次のことを指します。
- 実行可能ステータス®: 上記のように、CPU 上で実行中または CPU を待機しているプロセスのステータス。
- 中断不可能な状態 (D): 中断不可能とは、カーネルのコア プロセスにある一部のプロセスを指します。むやみに中断されると、予測できない結果が生じます。たとえば、ディスクに書き込みを行っているプロセスがやみくもに中断されると、次のような問題が発生する可能性があります。読み書きの不一致が問題です。
したがって、負荷平均は CPU 使用率に直接関係しておらず、その値が 100 を超える可能性があることを再度強調します。
実際、1 行目の表示データはコマンドと同じ機能を持っていますuptime
。
2 行目にはプロセス ステータスの概要が表示されます。
プロセスはさまざまな状態にあり得ます。実行中のタスク、スリープ状態のタスク、停止したタスク、ゾンビ プロセスなどのさまざまな状態のプロセスの数がここに表示されます。
以下の表示では、システムには合計 237 個のプロセスがあり、そのうち 1 個のプロセスが実行状態、236 個のプロセスがスリープ状態、0 個のプロセスが停止状態、0 個のプロセスがゾンビ プロセス状態にあります。
Tasks: 237 total, 1 running, 236 sleeping, 0 stopped, 0 zombie
3 行目はより重要な行で、オンラインで問題を見つけるときは、この点に注意を払うことがよくあります。
%Cpu(s): 0.3 us, 0.4 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st
ここでの各パラメータの意味は次のとおりです。
- us, user: ユーザー空間の CPU パーセンテージ
- sy, system: カーネル空間が占有する CPU の割合
- ni、niced: 調整された優先順位を持つユーザー プロセスによって占有される CPU の割合
- id、idle: アイドル状態の CPU の割合
- wa、IO wait: IO が完了するまでの待機に使用される CPU 時間
- hi: ハードウェア割り込みの処理に費やされた CPU 時間
- si: ソフトウェア割り込みを処理する CPU 時間
- st: ハイパーバイザーによって盗まれたこの仮想マシンの CPU 時間 (注釈: VM が現在ハイパーバイザーの下にある場合、ハイパーバイザーは実際に CPU 処理時間の一部を消費します)。
4つ目はメモリ部分のデータについてです。これには 2 行が含まれています。
最初の行は物理メモリの使用量で、2 行目はスワップ パーティションの使用量に関するものです。
MiB Mem : 3635.0 total, 3229.8 free, 441.0 used, 170.1 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3194.0 avail Mem
最初の行の意味は次のとおりです。
- 合計 3635.0 — 合計物理メモリ (3265MB)
- 3229.8 free — 空きメモリの合計量 (3229.8MB)
- 441.0 used — 使用中の合計メモリ (441.0MB)
- 170.1 buff/cache — ブロック バッファ + ページ キャッシュによって占有されるメモリ サイズ (169M)
ここに buff/cache のコンテンツを追加します。Linux 2.4 より前では、ページ キャッシュ と バッファ キャッシュ は、Linux 2.4 以降の 2 つの独立したキャッシュです。 ページ キャッシュ と バッファ キャッシュです。 が統一されました。
2行目の意味は以下の通りです。
- 2072.0 total - スワップ パーティションの合計量
- 2072.0 free - 空きスワップ パーティションの総数
- 0.0 used - 使用済みのスワップ パーティション サイズ
- 3194.0 avail Mem: この値はシステムの推定値であり、新しいプログラムを開始するために利用可能な物理メモリの量を表します (スワップ領域を除く)。
5 番目の部分は各プロセスのデータについてです。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1461 root 20 0 7252 3672 3280 S 0.7 0.1 0:00.03 bash
1621 root 20 0 10700 4360 3476 R 0.7 0.1 0:00.05 top
1477 root 20 0 0 0 0 I 0.3 0.0 0:00.01 kworker/0:0-events
1 root 20 0 103372 12748 9724 S 0.0 0.3 0:02.18 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
システムのプロパティとステータスの水平リストの下に、プロセスが列に表示されます。異なる列は、以下で説明する異なる属性を表します。
- PID: プロセス ID、プロセスの一意の識別子
- USER: プロセス所有者の実際のユーザー名。
- PR: プロセスのスケジュール優先度。このフィールドの一部の値は「rt」です。これは、これらのプロセスがリアルタイムで実行されていることを意味します。
- NI: プロセスの素晴らしい価値 (優先度)。 NIの値は[-20,19]であり、値が小さいほど優先度が高くなります。
- VIRT: プロセスによって使用される仮想メモリ。デフォルトはKBです。
- RES: 常駐メモリのサイズ。常駐メモリは、タスクによって使用されるスワップされていない物理メモリのサイズで、デフォルトは KB です。
- SHR: SHR はプロセスによって使用される共有メモリで、デフォルトは KB です。
- S: プロセスのステータスです。次のような異なる値があります。
- D – 中断できないスリープ状態。
- R - 実行状態
- S – スリープ状態
- T – 追跡または停止
- Z – ゾンビ状態
- CPU: 前回の更新以降にタスクによって使用された CPU 時間の割合。
- MEM: プロセスによって使用されている利用可能な物理メモリの割合。
- TIME: タスクの開始から現在までに使用された合計 CPU 時間 (100 分の 1 秒の精度)。
- COMMAND: プロセスの実行に使用されるコマンド。
スキル
マルチコアCPU監視
上部の基本ビューで、数字の 1 を押して、各論理 CPU のステータスを監視します。たとえば、以下の例では、仮想マシンには 4 つの CPU が含まれており、4 つの CPU の実行ステータスがここに表示されます。
top - 13:35:11 up 3:40, 2 users, load average: 0.00, 0.02, 0.00
Tasks: 234 total, 1 running, 233 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.3 us, 0.7 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
%Cpu1 : 0.7 us, 0.3 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu2 : 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3635.0 total, 3188.5 free, 461.1 used, 209.5 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3173.9 avail Mem
メモリユニットを切り替える
- タスクエリアのメモリ単位を切り替える
上部の基本ビューで、文字 e を押すと、各タスクが占有するメモリ サイズの単位が KB、MB、GB、TB、PB から EB にループで切り替わります。次の例では、単位が MB に切り替わります。
top - 14:45:06 up 4:59, 1 user, load average: 0.02, 0.01, 0.00
Tasks: 228 total, 2 running, 226 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st
MiB Mem : 3635.0 total, 3193.4 free, 454.6 used, 211.3 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3180.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
94996 root 20 0 10.4m 4.3m 3.4m R 0.7 0.1 0:00.05 top
1712 root 20 0 0.0m 0.0m 0.0m I 0.3 0.0 0:35.48 kworker/0:0-events
1 root 20 0 165.1m 12.5m 9.6m S 0.0 0.3 1:38.13 systemd
2 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.05 kthreadd
3 root 0 -20 0.0m 0.0m 0.0m I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0.0m 0.0m 0.0m I 0.0 0.0 0:00.00 rcu_par_gp
- 集計エリアのメモリ単位を切り替える
上下の文字 E を使用して、集計エリアのメモリ単位を KB、MB、GB、TB、 PBからEBまで。
top - 14:54:18 up 5:08, 1 user, load average: 0.02, 0.02, 0.00
Tasks: 227 total, 2 running, 225 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.4 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st
KiB Mem : 3722236 total, 3268096 free, 467500 used, 216364 buff/cache
KiB Swap: 2121724 total, 2121724 free, 0 used. 3254736 avail Mem
top - 14:54:34 up 5:08, 1 user, load average: 0.02, 0.02, 0.00
Tasks: 227 total, 1 running, 226 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.4 us, 0.4 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 3635.0 total, 3186.9 free, 461.2 used, 211.3 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3173.8 avail Mem
top - 14:54:44 up 5:08, 1 user, load average: 0.01, 0.02, 0.00
Tasks: 227 total, 1 running, 226 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
GiB Mem : 3.5 total, 3.1 free, 0.4 used, 0.2 buff/cache
GiB Swap: 2.0 total, 2.0 free, 0.0 used. 3.1 avail Mem
表示タスクの数を制限する
ショートカット キー n は、表示されるタスクの数を制限するために使用されます。0 は制限なしを意味します。デフォルトでは、すべてが表示されます (複数のページをめくる必要があります)。
ここで n を入力した後、再度 5 を入力して、5 件のレコードのみを表示することを選択します。
top - 14:47:34 up 5:01, 1 user, load average: 0.05, 0.03, 0.00
Tasks: 227 total, 1 running, 226 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.5 us, 1.5 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3635.0 total, 3187.3 free, 460.8 used, 211.3 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3174.2 avail Mem
Maximum tasks = 0, change to (0 is unlimited)5
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 169040 12832 9800 S 0.0 0.3 1:38.14 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd
次のように表示されます。
top - 14:48:16 up 5:02, 1 user, load average: 0.02, 0.02, 0.00
Tasks: 228 total, 1 running, 227 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st
MiB Mem : 3635.0 total, 3190.8 free, 457.2 used, 211.3 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3177.8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1386 root 20 0 84320 22744 19808 S 0.3 0.6 0:00.09 smbd
1514 root 20 0 7252 3696 3304 S 0.3 0.1 0:51.33 bash
90783 root 20 0 0 0 0 I 0.3 0.0 0:00.02 kworker/2:2-mm_percpu_wq
95906 root 20 0 10700 4356 3472 R 0.3 0.1 0:00.05 top
1 root 20 0 169040 12832 9800 S 0.0 0.3 1:38.14 systemd
指定したユーザーのタスクのみを表示する
ショートカット キー u はフィルタリングされるユーザーを表し、接頭辞 ! を追加して逆の条件を表すことができます。 UID またはユーザー名を入力し、Enter キーを直接押してこのフィルタリング条件をキャンセルできます。
top - 14:49:30 up 5:03, 1 user, load average: 0.00, 0.02, 0.00
Tasks: 229 total, 2 running, 227 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.4 sy, 0.0 ni, 98.9 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st
MiB Mem : 3635.0 total, 3190.0 free, 458.0 used, 211.3 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3177.0 avail Mem
Which user (blank for all) root
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
46 root 20 0 0 0 0 S 0.3 0.0 0:00.28 kcompactd0
1454 root 20 0 19112 7260 5176 S 0.3 0.2 0:33.76 sshd
1514 root 20 0 7252 3696 3304 S 0.3 0.1 0:51.54 bash
CPU使用率で並べ替える
top コマンドを実行した後、大文字の P を入力してタスクの CPU 使用率を並べ替えます。方法は 2 つあります。
- 大文字キーボードを開いた状態で、p を押すだけです
- 大文字のキーボードを開くには、shift+p を押します。
top - 15:01:01 up 5:15, 1 user, load average: 0.02, 0.03, 0.00
Tasks: 228 total, 2 running, 226 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.8 us, 2.8 sy, 0.0 ni, 94.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3635.0 total, 3189.3 free, 458.8 used, 211.3 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3176.2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
727 root 20 0 26128 9688 8596 S 7.4 0.3 0:00.16 systemd-journal
99654 root 20 0 10700 4356 3476 R 3.7 0.1 0:00.74 top
1 root 20 0 169040 12832 9800 S 0.0 0.3 1:38.14 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
メモリ使用量に基づいてタスクを並べ替える
top コマンドを実行した後、大文字の M を入力してタスクの CPU 使用率を並べ替えます。方法は 2 つあります。
- 大文字キーボードを開いた状態で、m を押すだけです
- 大文字のキーボードを開くには、shift+m を押します。
top - 15:02:25 up 5:16, 1 user, load average: 0.00, 0.02, 0.00
Tasks: 229 total, 1 running, 228 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.4 us, 0.4 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st
MiB Mem : 3635.0 total, 3187.3 free, 460.8 used, 211.3 buff/cache
MiB Swap: 2072.0 total, 2072.0 free, 0.0 used. 3174.2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1386 root 20 0 84320 22744 19808 S 0.0 0.6 0:00.09 smbd
813 root 20 0 257068 21184 16536 S 0.0 0.6 0:01.22 NetworkManager
872 root 20 0 72880 17140 14664 S 0.0 0.5 0:00.62 nmbd
1 root 20 0 169040 12832 9800 S 0.0 0.3 1:38.14 systemd
1436 root 20 0 18764 12060 10248 S 0.0 0.3 0:00.03 sshd
1433 root 20 0 18756 12036 10184 S 0.0 0.3 0:00.04 sshd
最上位の対話モードでヘルプを表示する
対話モードでは、「h」と入力してヘルプ情報を表示します。