Linux システムでのパフォーマンス分析コマンド

Linux システムには、パフォーマンス分析とデバッグ用のコマンドとツールが多数あり、システムのボトルネックの特定、パフォーマンスの最適化、問題の調査に役立ちます。この記事では、パフォーマンス分析中に使用できるいくつかのコマンドを紹介します。

以下は、一般的に使用されるパフォーマンス分析コマンドとツールの概要です。

注文 機能の簡単な説明
top システム内で実行されているプロセスとシステム パフォーマンス インジケーター (CPU 使用率、メモリ使用率など) をリアルタイムで監視するために使用されます。
nmon CPU、メモリ、ディスク、ネットワーク、その他の情報を含むリアルタイムのシステム パフォーマンス データを提供するパフォーマンス監視ツール。
lsof 開いているファイルとネットワーク接続をリストするために使用され、リソース リークや異常な接続を見つけるために使用できます。
pidstat プロセスレベルの CPU、メモリ、IO、およびその他のパフォーマンス データを監視するために使用されます。
vmstat システムの仮想メモリ、プロセス、CPU アクティビティ、および IO 統計を表示するために使用されます。
iostat システム ディスクと IO パフォーマンスを監視し、ディスク アクティビティに関する情報を提供するために使用されます。
tcpdump ネットワーク データ パケットのキャプチャに使用され、ネットワーク パフォーマンス分析やトラブルシューティングに非常に役立ちます。

1、トップ

top このコマンドは、Linux システムで一般的に使用されるパフォーマンス分析ツールで、システム内の各プロセスのリソース使用状況 (CPU 使用率、メモリ使用率など) をリアルタイムで表示できます。

1.1 文法

top [options]

一般的なオプション:

  • -d または --delay: 更新間隔、つまりトップが何秒ごとに更新されるかを指定します。デフォルトは 3 秒です。

  • -n または --iterations: 更新回数、つまりトップがデータを更新する回数を指定します。

  • -u または --user: 指定したユーザーのプロセスのみを表示します。

  • -p または --pid: 指定されたプロセス ID の情報のみを表示します。

  • -H:プロセスの階層関係、つまりスレッドを表示します。

1.2 例

以下は top コマンドからの出力例です。

top - 16:30:45 up 2 days,  5:37,  2 users,  load average: 0.15, 0.18, 0.20
Tasks: 186 total,   1 running, 185 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.5 us,  0.5 sy,  0.0 ni, 97.9 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem : 16327936 total,  9359124 free,  2368572 used,  4600256 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used. 13755352 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  2191 alice     20   0  169168  14164  10964 S   3.0  0.1   0:07.83 gnome-terminal-
  2811 bob       20   0 2067296 301100  78964 S   2.0  1.8  30:02.45 firefox
    1 root      20   0  191064   7780   4744 S   0.0  0.0   0:06.07 systemd
    ...

上記の例では、各行の出力情報は次のとおりです。

  • 行 1: システムに関する一般的な情報を提供します。それらは、現在のシステム時間、システム実行時間、現在のログインユーザー数、および負荷平均です (load averageつまり、タスクキューの平均長、3 つの値は 1 分、5 分、5 分の平均値を表します)。ここまであと 15 分です)。

  • 2 行目: タスク情報。これらはタスクの総数であり、実行中 ( running)、スリープ ( sleeping)、停止 ( )、およびゾンビ (「ゾンビ」) 状態stoppedにあるプロセスの数を示します。

  • 3 行目: CPU 統計。us ユーザー空間の CPU 占有率を示します。sy カーネル空間の CPUni 占有率を示します。ユーザー プロセス空間で優先順位が変更されたプロセスの CPU 占有率を示します。id アイドル状態の CPU 占有率を示します。wa 入出力を待機している CPU 時間の割合を示します。hi ハードウェアを示します。割り込み要求。si ソフトウェア割り込み要求を示します。

  • 4行目:メモリ情報。これらは、合計物理メモリ、使用済み物理メモリ、空き物理メモリ、およびカーネル バッファ使用量です。

  • 5行目:エリア情報を交換します。スワップ領域の総量、空きスワップ領域のサイズ、バッファスワップ領域のサイズです。

  • ...: プロセスリスト。各行は、プロセス ID、ユーザー、CPU 使用率、メモリ使用量、プロセス ステータスなどを含むプロセスに関する情報を表します。

top コマンドの出力はリアルタイムで更新され、対話型コマンドを使用して並べ替え方法の切り替え、表示内容の変更などを行うことができることに注意してください。たとえば、 を押すと M メモリ使用量でプロセスを並べ替え、 を押すと P CPU 使用量でプロセスを並べ替えます。q トップを終了するには、キーを押します 。

2、nmon

nmon これは、システム パフォーマンスをリアルタイムで監視するためのコマンド ライン ツールで、元々は IBM の Nigel Griffiths によって開発されました。システムの CPU、メモリ、ディスク、ネットワーク、その他のパフォーマンス指標、およびプロセス レベルの情報を表示する簡潔な方法を提供します。

nmon リアルタイムのパフォーマンス データを表示できる対話型インターフェイスを備えており、管理者や開発者がシステム パフォーマンス分析を容易に行うことができます。

nmon コマンドの一般的な使用法と例をいくつか示します 。

  1. 1. 基本的な使い方:

    次のコマンドで開始します nmon

    nmon

    これにより、 nmon さまざまなパフォーマンス メトリックのリアルタイム データを表示する対話型インターフェイスが起動します。

  2. 2. 更新頻度を指定します。

    -s パラメータを使用して、更新間隔を秒単位で指定できます 。たとえば、次のコマンドは 2 秒ごとにデータを更新します。

    nmon -s 2
  3. 3. データをファイルに保存します。

    -f パラメーターを 使用して、 nmon 後の分析のために出力をファイルに保存できます。たとえば、次のコマンドはデータを次の nmon_output.nmon 名前のファイルに保存します。

    nmon -f -c 10 -s 2 -T -m /path/to/nmon_output.nmon

    この例では、 10 回のループを実行した後に自動的に終了する-c 10 ことを意味し 、 出力にタイムスタンプを含めることを意味します。nmon-T

  4. 4. 特定の項目のみを表示します。

    特定のパフォーマンス メトリクスのみに興味がある場合は、 -d パラメータを使用して表示する項目を指定できます。たとえば、次のコマンドは CPU とメモリ関連のデータのみを表示します。

    nmon -d cpu,mem
  5. 5. 遠隔監視:

    SSH 経由でリモート システム上で実行し nmon、分析のためにパフォーマンス データをローカルに転送できます。たとえば、次のコマンドはリモート システム上で実行され nmon 、データをローカルに転送します。

    ssh user@remote_host "nmon -f -s 5 -c 10" > nmon_output.nmon

これらの例は、その使用法のほんの一部です nmon 。nmon その他にも、ニーズに応じて調整して使用できるオプションや機能が多数あります。すべてのオプションと機能の詳細 nmon については、公式ドキュメントを確認するか、 引数をnmon 使用してコマンドを実行するときに -h ヘルプ情報を参照してください。

3、lsof

lsof(「開いているファイルの一覧表示」) は、Linux システム上のプロセスによって開かれているファイルとネットワーク接続を一覧表示するために使用されるコマンドです。これは、どのプロセスがどのファイルにアクセスしているか、またネットワーク接続に関する情報を確認するのに役立ちます。

lsof リソース リークのトラブルシューティング、プロセスによって占有されているファイルの検索などに使用できます。

3.1 文法

lsof 一般的に使用されるいくつかのコマンド オプションとその説明を次に示します 。

  • -i: ネットワーク接続をリストします。

  • -n: ホスト名とポート番号を解決しません。

  • -c <进程名>: 特定のプロセスのみの情報を一覧表示します。

  • -p <进程ID>: 指定したプロセスに関する情報を一覧表示します。

  • -u <用户名>: 特定のユーザーに属する情報を一覧表示します。

  • -t:プロセスIDのみを表示します。

  • -F <格式>:指定した形式で出力します。

3.2 例

lsof コマンドの使用方法を示すいくつかの例を次に示します 。

  1. 1. 開いているファイルとネットワーク接続をすべてリストします。

    lsof
  2. 2. 特定のファイルを開いたユーザーをリストします。

    lsof /path/to/file
  3. 3. 特定のポートのネットワーク接続をリストします。

    lsof -i :<port>
  4. 4. ユーザーが開いたファイルをリストします。

    lsof -u <username>
  5. 5. 特定のプロセスで開いているファイルをリストします。

    lsof -p <pid>
  6. 6. 特定のタイプのファイルをリストします (TCP 接続など)。

    lsof -i tcp
  7. 7. ホスト名とポート番号を解決せずに、すべてのネットワーク接続を一覧表示します。

    lsof -ni
  8. 8. 情報を機械可読形式で出力します。

    lsof -F json
  9. 9. デバイスを使用しているすべてのプロセスをリストします。

    lsof /dev/sda1

lsof このコマンドは、ファイル記述子、ファイル タイプ、ファイルの場所、オープン方法、プロセス ID、ユーザーなどを含む豊富な情報を提供することに注意してください。ニーズに応じて、さまざまなオプションを使用して、必要な情報をフィルタリングして表示できます。man lsof このコマンドを使用すると 、完全なコマンド ドキュメントと詳細な手順が表示されます。

4、pidstat

pidstat これは、プロセス レベルのパフォーマンス統計を監視するためのコマンド ライン ツールで、CPU 使用率、メモリ使用量、IO アクティビティなどに関する情報を提供できます。これは sysstat スイートの一部であり、使用する前にインストールする必要があります。

4.1 文法

pidstat コマンドの一般的なオプションは次のとおりです 。

  • -u: CPU 使用率と統計を表示します。

  • -r: メモリ使用量と統計を表示します。

  • -d: ディスク IO 統計を表示します。

  • -t:プロセスの起動時間を表示します。

  • -p <PID>: 監視する特定のプロセス ID を指定します。

  • -h:ヘルプ情報を表示します。

4.2 例

いくつかの例を以下に示します。

  1. 1. プロセスの CPU 使用率と統計を表示します。

    pidstat -u 1

    これにより、CPU 使用率と統計が毎秒表示され、デフォルトですべてのプロセスのデータが表示されます。-p <PID> オプションを追加することで特定の処理を指定できます 。

  2. 2. プロセスのメモリ使用量と統計を表示します。

    pidstat -r 1

    上の例と同様に、メモリ使用量と統計情報が毎秒表示されます。

  3. 3. プロセスのディスク IO 統計を表示します。

    pidstat -d 1

    これにより、読み取りおよび書き込み速度、読み取りおよび書き込みの数などを含むディスク IO 統計が毎秒表示されます。

  4. 4. 特定のプロセスの CPU 使用率と統計を表示します。

    pidstat -u -p <PID> 1

    これにより、指定されたプロセスの CPU 使用率と統計が毎秒表示されます。ここで、 は <PID> ターゲット プロセスのプロセス ID です。

  5. 5. プロセスの開始時刻を表示します。

    pidstat -t

    これにより、すべてのプロセスの開始時間が表示されます。

pidstat これは、特定のプロセスのパフォーマンス動作を深く理解するのに役立ち、パフォーマンスのチューニングやトラブルシューティングなどを実行できるようになります。特定のオプションと出力形式はシステムのバージョンによって異なる場合があることに注意してください。 man pidstat 詳細については、完全なコマンド マニュアルを参照してください。

5、vmstat

vmstat(仮想メモリ統計) は、Linux システムで一般的に使用されるパフォーマンス分析ツールであり、システムの仮想メモリ、プロセス、CPU アクティビティ、および IO に関する詳細な統計情報を提供します。これを使用すると vmstat、システムのパフォーマンスをリアルタイムで監視し、潜在的なボトルネックや問題を迅速に特定できます。

5.1 文法

vmstat [options] [delay [count]]
  • options: 特定の出力オプションを指定するために使用されます。

  • delay: 出力間の時間間隔 (秒単位)。

  • count:出力数の制限。

5.2 例

vmstat 5 3

このコマンド例では、統計データを 5 秒ごとに合計 3 回出力します。

出力例:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs  us sy id wa st
 1  0      0 244304  67420 802252    0    0     0     4    3    4   1  1 97  1  0
 0  0      0 243968  67420 802256    0    0     0     0 1159 2292   1  1 98  0  0
 0  0      0 243636  67420 802256    0    0     0     0 1173 2261   1  1 98  0  0

この例では、出力のさまざまな列により、プロセス ステータス、メモリ使用量、スワップ スペース使用量、IO アクティビティ、システム アクティビティ、CPU 使用量などのさまざまな統計情報が得られます。このデータを観察することで、システムのパフォーマンスを理解し、潜在的な問題を特定できます。

vmstat 出力列の意味:

  1. procs: プロセス関連の統計。 r: 実行中のプロセスの数、b: 実行を待機しているプロセスの数。

  2. memory: メモリ関連の統計。swpd: 仮想メモリ使用量 (KB 単位)、free: 空きメモリ (KB 単位)、buff: バッファとして使用されるメモリ (KB 単位)、cache: キャッシュとして使用されるメモリ (KB 単位)。

  3. swap: スワップスペース関連の統計。si: ディスクからスワップ領域に読み取られたデータ量 (KB 単位)、so: ディスク上のスワップ領域に書き込まれたデータ量 (KB 単位)。

  4. io: IO 関連の統計。bi: 1 秒あたりにブロック デバイス (ハードディスクなど) から読み取られたブロックの数 (ブロック単位)、bo: 1 秒あたりにブロック デバイスに書き込まれたブロックの数 (ブロック単位)。

  5. system: システム関連の統計。in: 1 秒あたりの割り込み数、cs: 1 秒あたりのコンテキストスイッチの数。

  6. cpu: CPU 使用率の統計。%us: ユーザー空間の CPU 使用率、%sy: システム CPU 使用率、%id: アイドル状態の CPU の割合、%wa: IO を待機している CPU の割合、%st: 仮想化に使用された CPU 時間の割合。

6、イオスタット

iostat これは Linux システムで一般的に使用されるコマンドであり、システムのディスクおよび IO パフォーマンスを監視するために使用されます。ディスク アクティビティ、IO 遅延、スループットに関する情報が提供されるため、ディスク パフォーマンスのボトルネックの特定やチューニングに非常に役立ちます。

iostat このコマンドではインストール パッケージを使用する必要があること に注意してくださいsysstat 。ほとんどの Linux ディストリビューションでは、パッケージ マネージャーを使用してパッケージをインストールできます sysstat 。

6.1 文法

iostat [options] [interval] [count]

オプションの説明:

  • -c:CPU統計を表示します。

  • -d: ディスク統計を表示します。

  • -k: データをキロバイト単位で表示します。

  • -m: データをメガバイト単位で表示します。

  • -x: より多くのディスクおよびパーティション情報を含む拡張統計を表示します。

6.2 例

iostat コマンドの出力には、各ディスクとパーティションの統計に加え、システム負荷平均、CPU 使用率、コンテキスト切り替えなどの情報が含まれます。以下はサンプル出力の一部です。

Linux 5.4.0-81-generic (hostname)   08/13/2023  _x86_64_    (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.13    0.00    1.45    0.46    0.00   90.96

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               2.14        18.60        19.84     123759     132016
sdb               0.06         0.28         0.00       1863          0

この例では、avg-cpu 統計の一部は CPU 使用率について、一部は各ディスク デバイスについて表示されますDevice (転送速度や読み取りおよび書き込みの合計バイト数など)。この出力を使用して、システムのディスクのパフォーマンスと負荷を評価できます。

  1. 1. 平均 IO 統計を表示します。1 秒ごとに 1 回更新され、合計 5 回更新されます。

    iostat
  2. 2. 詳細なディスク IO 統計を表示します。1 秒ごとに 1 回、合計 3 回更新されます。

    iostat -d 1 3
  3. 3. データをキロバイト単位で表示し、CPU とディスクの統計を表示します。1 秒ごとに 1 回更新され、合計 4 回更新されます。

    iostat -k -c -d 1 4
  4. 4. 拡張ディスク IO 統計を表示します。1 秒ごとに 1 回、合計 5 回更新されます。

    iostat -x 1 5

7、tcpダンプ

tcpdump これは、Unix システムで一般的に使用されるネットワーク パケット キャプチャ ツールであり、ネットワーク データ パケットをキャプチャして分析するために使用されます。ネットワーク インターフェイスをリッスンし、インターフェイスを通過するパケットをキャプチャし、パケットの内容を読み取り可能な形式で表示できます。

tcpdump 目的のパケットのみをキャプチャするためのさまざまなフィルタリング オプションがサポートされています。

tcpdump 一般的に使用されるコマンド オプションと例をいくつか示します 。

  1. 1. 基本的な使い方:

    tcpdump

    これにより、デフォルトのネットワーク インターフェイス上のすべてのパケットがキャプチャされます。ただし、キャプチャの範囲を制限するために他のオプションを使用したい場合もよくあります。

  2. 2. ネットワーク インターフェイスを指定します。

    tcpdump -i eth0

    -i ここで、オプション を使用して キャプチャするネットワーク インターフェイスを指定しますeth0

  3. 3. パケット数を指定します。

    tcpdump -c 10

    オプションを使用して -c 、キャプチャするパケットの数を指定します。ここでは、最初の 10 パケットがキャプチャされます。

  4. 4. 特定のホストからパケットをキャプチャします。

    tcpdump host 192.168.1.100

    キーワードを使用して host 、特定のホストのすべてのパケットをキャプチャします。

  5. 5. 特定のポートでパケットをキャプチャします。

    tcpdump port 80

    キーワードを使用して、 port 特定のポート、この場合はポート 80 (HTTP) のパケットをキャプチャします。

  6. 6. 複数のフィルター条件を組み合わせます。

    tcpdump host 192.168.1.100 and port 22

    論理演算子 を使用して複数のフィルタ条件を組み合わせることができます and 。ここでは、ホスト 192.168.1.100 上のポート 22 (SSH) パケットをキャプチャします。

  7. 7. パケット キャプチャの結果をファイルに保存します。

    tcpdump -w capture.pcap

    -w パケット キャプチャ結果をファイルに保存するオプションを使用します 。ファイル形式は pcap です。

  8. 8. 保存されたパケット キャプチャ ファイルを読み取ります。

    tcpdump -r capture.pcap

    オプションを使用して -r 、保存されたパケット キャプチャ ファイルを読み取り、その内容を表示します。

  9. 9. 詳細なパケット情報を表示します。

    tcpdump -v

    詳細なパケット情報を表示するには、オプションを使用します -v 。

  10. 10. さらに詳細なパケット情報を表示します。

tcpdump -vv

オプションを使用して -vv 、解析されたプロトコル ヘッダーなど、より詳細なパケット情報を表示します。

これらは tcpdump 基本的な使用例の一部にすぎません。このツールは、さまざまなネットワーク パケットのキャプチャと分析のニーズを満たすために、他の多くのオプションやフィルタリング条件もサポートしています。パケット キャプチャにはネットワーク データへのアクセスが含まれるため、通常は root または適切な権限を持つユーザーとして実行する必要があることに注意してください tcpdump

おすすめ

転載: blog.csdn.net/z123456789XDW/article/details/132505523