GNU/Linux >> Linux の 問題 >  >> Linux

vmstat を使用して Linux のパフォーマンスの問題をトラブルシューティングする

vmstat (仮想メモリ統計) コマンドを使用すると、システムのメモリ使用量を監視できます。仮想メモリの量、および空き領域とページング アクティビティの量が表示されます。ページインとページアウトが発生するのを観察できます。これは、システム パフォーマンスに悪影響を及ぼす可能性がある物理メモリの不足を検出するのに非常に役立ちます。

引数なしで vmstat を実行する

開始する前に、vmstat からの出力の最初の行 (および引数なしで実行された場合に表示される唯一の行) は、システムの起動時からの要約であることに注意することが重要です。通常、特にシステムが長時間稼働している場合、パフォーマンスの問題にはあまり役に立ちません。ただし、過去に発生したが現在発生していないイベントに関する有用な情報が含まれている可能性があります。

# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0 387560  62140     44 348320    1    2    94    20   90   15  1  1 98  0  0

vmstat 出力の読み方

vmstat の出力には、メモリ統計だけではありません。 iostat および mpstat と同様に、vmstat は interval および count 引数を受け入れます。次の例では、5 秒間隔で 3 つのレポートを実行します:

# vmstat 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
 3  0 384120  68604   8088 327332    1    2    90    20   90   14  1  1 98  0  0
 1  0 384120  68604   8088 327364    0    0     0     0   91  179  1  0 99  0  0
 0  0 384120  68232   8088 327364    0    0     0     0  107  190  1  1 98  0  0

出力は次の 6 つのセクションに分かれています。
1.手続き
2.メモリ
3.スワップ
4. io
5.システム
6. CPU

手続き

最初の 2 つの列は、プロセスに関する情報を提供します:

r 待機状態にあるプロセスの数。これらのプロセスは実行を待っているだけで、何もしていません。
b 最後の更新以降にスリープ モードで中断されたプロセスの数

メモリ

次の 4 つの列は、メモリに関する情報を示します。

swpd 使用されている仮想メモリの量
無料 アイドル メモリの量
バフ バッファとして使用されるメモリの量
キャッシュ キャッシュとして使用されるメモリの量

スワップ

次の 2 つの列は、スワップに関する情報を提供します:

si ディスクからスワップインされたメモリの量 (1 秒あたり)
そう ディスクにスワップアウトされたメモリの量 (1 秒あたり)

ゼロ以外の si そしてそう 数値は、十分な物理メモリがなく、カーネルがメモリをディスクにスワップしていることを示しています。

イオ

最初の 2 列は、I/O (入出力) に関する情報を提供します:

bi ブロック デバイスから受信した 1 秒あたりのブロック数
ブロック デバイスに送信された 1 秒あたりのブロック数

システム

次の 2 つの列には、次のシステム情報が表示されます:

in クロックを含む 1 秒あたりの割り込み数
cs 1 秒あたりのコンテキスト スイッチの数

CPU

最後の 5 列は、合計 CPU 時間のパーセンテージを示します:

私たち ユーザー プロセスに費やされた CPU サイクルの割合
sy システム (カーネル) プロセスに費やされた CPU サイクルの割合
ID アイドル状態で費やされた CPU サイクルの割合
I/O の待機に費やされた CPU サイクルの割合
st 仮想マシンから盗まれた CPU サイクルの割合

コマンドライン オプション

vmstat コマンドにさまざまなオプションを指定すると、追加情報を含めることができます。コマンドライン オプションの一部を以下に示します:

-a アクティブおよび非アクティブなメモリを表示します。
-f ブート以降のフォーク数を表示します。
-t 出力にタイム スタンプを追加します。
-d ディスク統計を報告します。

CPU のボトルネック

vmstat の出力には、CPU パフォーマンスに関連する 2 つの重要な領域があります。最初は r です 桁。出力の最初の列です。これには、vmstat が実行された過去の間隔中に実行キューにあったスレッドの数に対応する値が含まれています。これらのスレッドは、実行のために CPU が使用可能になるのを待っていました。ここで適切な最大数についてはいくつかの考え方がありますが、ほとんどの人は、システム上の CPU 数の 2 倍から 5 倍以上がボトルネックになることに同意しています (この見積もりは、マルチコア CPU に合わせて調整する必要があります)。 /P>

CPU 関連のデータを探す 2 番目の場所は、出力の右側の列です。 us (ユーザー) 時間、sy (システム) 時間、id (アイドル) 時間の 3 つの列があります。これら 3 つは、CPU 時間の使用率をパーセンテージで分類します。合計すると 100% になります。理想的には、CPU はほとんどの時間を us および id カテゴリで費やします。 sy カテゴリは、CPU がドライバー/カーネル レベルの作業に費やす時間を指します。この時間は、ユーザー アプリケーションから奪われます。 CPU がこのカテゴリでほとんどの時間を費やしている場合は、CPU またはメモリのボトルネック、カーネルレベルのロックの問題、またはその他の問題が原因で過度のコンテキスト切り替えが発生している可能性があります。ビジー状態のシステムでは、ゼロに近い一定のアイドル率が示されます。ただし、システムがビジー状態であっても、システムが過負荷になっているとは限りません。

ディスク / IO パフォーマンス

vmstat ユーティリティでは、どのディスクにボトルネックがあるかはわかりませんが、全体的に IO の問題があるかどうかはわかります。出力で重要な列は b (ブロックされた) 列です。これは、ブロックされた、または過去の間隔で IO の完了を待機していたスレッドの数を示します。ほとんどの場合、b 列は 0 である必要があります。その列に常にゼロ以外の数値がある場合は、iostat でさらに調査できます。

メモリのボトルネック

メモリ関連の問題の分析は、4 列目にある vmstat の出力で空きメモリの量を確認することから始める必要があります。空きメモリが少ない場合は、どのプロセスがより多くのメモリを消費しているかをさらに調査する必要があります。

結論

vmstat コマンドは、パフォーマンスの問題をトリアージするための便利なツールです。問題をさらに詳しく診断するために、どのサブシステムをより詳しく調べる必要があるかがわかります。

iostat を使用して Linux でシステム パフォーマンスを監視する (例を含む)


Linux
  1. Linuxでprocファイルシステムを使用してトラブルシューティングする

  2. Linuxのメモリ使用量

  3. Linux プロセスのパフォーマンスの問題をデバッグするための 10 の pidstat の例

  1. sar、ps、および free を使用して Linux でメモリ使用量を計算する方法

  2. Linux で R のメモリ使用量を制限する

  3. Linux 非アクティブ メモリ

  1. LinuxでのNFSパフォーマンスの問題をトラブルシューティングするためのnfsstatおよびnfsiostatの使用

  2. Linuxコマンド:vmstatを使用した仮想メモリの探索

  3. WindowsPerformanceAnalyzerを使用したパフォーマンスの問題のトラブルシューティング