Linuxパフォーマンス解析用topコマンドの詳細説明

Linuxパフォーマンス解析用topコマンドの詳細説明

概要

top コマンドは、Linux でよく使用されるパフォーマンス分析ツールで、システム内の各プロセスのリソース使用状況をリアルタイムに表示でき、Windows システムのタスク マネージャーに似た機能を備えています。

git ssh キー

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」と入力してヘルプ情報を表示します。

トップ-インタラクティブ-ヘルプ

おすすめ

転載: blog.csdn.net/qq_31442743/article/details/131918449