vmstat コマンドによるメモリー使用量の判別

vmstat コマンドは、システム内の全プロセスによって使用されるアクティブ な仮想メモリーの合計の要約ばかりでなく、 フリー・リスト上の実メモリー・ページ・フレームの数も示します。

アクティブ仮想メモリーは、実際にタッチされた仮想メモリーの作業セグメント・ページの数で定義されます。 この数は、 アクティブ仮想メモリー・ページの一部がページング・スペースに書き出されている可能性があるので、 マシン内の実ページ・フレームより大きい場合があります。

システムでメモリーが不足しているかまたは一部のメモリー・チューニングが必要な場合、 設定された間隔だけ vmstat コマンドを実行して、 得られたレポートの「pi」欄と「po」欄を調べます。 これらの欄は、1 秒当たりのページインするページング・スペースの数、および 1 秒当たりのページアウトするページング・スペースの数を示しています。 この値が常にゼロ以外の場合は、メモリーのボトルネックが存在する恐れがあります。 時々ゼロ以外の値になるのは、ページングが仮想メモリーの基本原理なので問題ありません。
# vmstat 2 10
kthr     memory             page              faults        cpu
----- ----------- ------------------------ ------------ -----------
 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
 1  3 113726   124   0  14   6 151  600   0 521 5533 816 23 13  7 57
 0  3 113643   346   0   2  14 208  690   0 585 2201 866 16  9  2 73
 0  3 113659   135   0   2   2 108  323   0 516 1563 797 25  7  2 66
 0  2 113661   122   0   3   2 120  375   0 527 1622 871 13  7  2 79
 0  3 113662   128   0  10   3 134  432   0 644 1434 948 22  7  4 67
 1  5 113858   238   0  35   1 146  422   0 599 5103 903 40 16  0 44
 0  3 113969   127   0   5  10 153  529   0 565 2006 823 19  8  3 70
 0  3 113983   125   0  33   5 153  424   0 559 2165 921 25  8  4 63
 0  3 113682   121   0  20   9 154  470   0 608 1569 1007 15  8  0 77
 0  4 113701   124   0   3  29 228  635   0 674 1730 1086 18  9  0 73

上記の出力例では、出力に入出力待ちが多いことや、ブロックされたキューのスレッドの数に注意してください。 その他の入出力アクティビティーが入出力待ちを発生させる ことがありますが、今回のケースでは、ほとんどの入出力待ちはページング・スペースからのページインおよびページアウトによるものです。

システムにその VMM に関するパフォーマンス上の問題があるかどうかを見るには、 「memory」と「page」の下の欄を調べます。

  • memory

    実メモリーおよび仮想メモリーに関する情報を提供します。

    • avm

      アクティブ仮想メモリーの avm 欄は、vmstat サンプルが 収集された時点でアクティブであった仮想メモリー・ページ数を表しています。 据え置き ページ・スペース・ポリシーはデフォルト・ポリシーです。 このポリシーの下では、avm 値は、 使用されているページング・スペース・ページ数より大きくなることがあります。 avm 統計情報に、ファイル・ページは含まれません。

    • fre

      fre」欄は、空きメモリー・ページの平均数を示します。 1 ページは、実メモリーの 4 KB の領域です。 システムは、メモリー・ページのバッファーを維持しています。これはフリー・リストと呼ばれ、VMM にスペースが必要な場合はすぐにアクセスできるようになっています。 VMM がフリー・リストに保持する最小ページ数は、vmo コマンドの minfree パラメーターによって決まります。 詳細については、VMM ページ置換のチューニングを参照してください。

      アプリケーションが終了すると、その作業ページはすべて、即時にフリー・リストに戻されます。 ただし、その永続ページまたはファイルは RAM に残されるので、VMM が他のプログラムのためにスチールするまでは、 フリー・リストに戻されません。 永続ページは、対応するファイルが削除された場合にも解放されます。

      このため、「fre」値は、 プロセスがいつでも使用できる実メモリーをすべて示しているとは限りません。 ページ・フレームが必要な場合、終了したアプリケーションに関連する永続ページは、 最初に別のプログラムに渡されるものの中の 1 つです。

      fre」値が maxfree 値をかなり上回っている場合は、システムがスラッシング 状態であるということはありません。 スラッシングとは、システムが連続してページインとページアウトを行っていることを意味します。 ただし、システムがスラッシング状態になっている場合、「fre」値が小さくなることは確かです。

  • page

    ページ・フォールトとページング・アクティビティーに関する情報。 これらは間隔内で平均され、1 秒当たりの単位で示されます。

    • re
      注: この欄は現在サポートされません。
    • pi

      pi 欄には、ページング・スペースからページインされるページの数が詳しく表示されます。 ページング・スペースは、仮想メモリーの一部で、ディスクに常駐している部分です。 これは、メモリーがオーバーコミットされたときのオーバーフローとして使用されます。 ページング・スペースは、実メモリーからスチールされた作業セット・ページのストレージ専用の論理ボリュームで構成されています。 プロセスがスチールされたページを参照すると、ページ・フォールトが起こるので、 そのページをページング・スペースからメモリーに読み込む必要があります。

      ハードウェア、ソフトウェアおよびアプリケーションの構成が多様なので、 注意すべき絶対的数は存在しません。 このフィールドは、ページング・スペース・アクティビティーのキー・インディケーターとして重要です。 ページインが発生した場合は、その前にそのページのページアウトがあったはずです。 メモリー制約環境では、各ページインによって強制的に異なるページがスチールされ、その結果、 ページアウトが行われることもよくあります。

    • po

      po」欄には、ページング・スペースにページアウトされるページの数 (率) が表示されます。 作業用ストレージのページがスチールされると必ず、それがまだページング・スペースに常駐していないかまたは変更されている場合は、 ページング・スペースに書き込まれます。 そして再度参照されなければ、 プロセスが終了するかスペースを放棄するまで、ページング・デバイスに存在し続けます。 その後で不在になったページに含まれているアドレスを参照すると、 ページ・フォールトになり、そのページはシステムによって個々にページインされます。 プロセスが正常に終了すると、そのプロセスに割り当てられたページング・スペースは解放されます。 システムが多数の永続ページを読み込んでいる場合、対応する pi が増加しないのに、po が増加することに気付く場合があります。 これは必ずしもスラッシングを示しているわけではありませんが、アプリケーションのデータ・アクセスのパターンを調査する必要があります。

    • fr

      その間隔中に、ページ置換アルゴリズムによって解放された 1 秒当たりのページ数。 VMM ページ置換ルーチンは、ページ・フレーム・テーブル (つまり PFT) をスキャンするとき、 使用可能メモリー・フレームのフリー・リストの補充に、どのページをスチールするかの選択の基準を使用します。 この基準には、両方の種類のページ、作業 (計算) およびファイル (永続) ページが含まれます。 ページが解放されているだけでは、何らかの入出力が行われたことを意味することにはなりません。 例えば、永続ストレージ (ファイル) ページが変更されていない場合、そのページは元のディスクに書き出されません。 入出力が不要であれば、ページの解放に最低のシステム・リソースしか必要としません。

    • sr

      その間隔中に、ページ置換アルゴリズムによって調べられた 1 秒当たりのページ数。 ページ置換アルゴリズムは、ページ置換しきい値の要件を満たすほど十分にスチールするために、多くのページ・フレーム をスキャンしなければならない場合があります。 sr 値が fr 値よりも高くなればなるほど、 ページ置換アルゴリズムがスチール対象の適格なページを見つけるのが難しくなります。

    • cy

      クロック・アルゴリズムのサイクル数/秒。 VMM は、クロック・アルゴリズムと呼ばれている手法を使用して、置き換えるページを選択します。 この手法は、各ページの被参照ビットを利用して、最近どのページが使用 (参照) されたかを示すものです。 ページ・スチール・ルーチンは、呼び出されると、PFT 内を巡回して、各ページの被参照ビットを調べます。

      cy」欄は、ページ置換コードが PFT をスキャンした回数/秒を示します。 フリー・リストは PFT のスキャンを完了せずに補充することができ、 また vmstat フィールドはすべて整数で報告されるので、 このフィールドは通常はゼロになっています。

システムに適した RAM の量を判別する 1 つの方法は、vmstat コマンドによって報告された avm の最大値を調べることです。 それに 4 K をかけてバイト数を求めてから、結果をシステム上の RAM のバイト数と比較します。 理想的には、avm は合計 RAM より少なくする必要があります。 多い場合は、多少の仮想メモリーのページングが行われます。 発生するページングの量は、2 つの値の差によって決まります。 仮想メモリーのアイデアは、 実際にある以上のメモリーのアドレッシングの能力が得られる (メモリーの一部は RAM にあり、 残りはページング・スペースにある) ということです。 しかし、実メモリーをはるかに超える仮想メモリーが存在する場合は、 この方法によって大量のページングが行われ、その結果遅延が発生する恐れがあります。 avm が RAM より少ない場合は、RAM がファイル・ページでいっぱいになったために、 ページング・スペースのページングが起こる可能性があります。 そのような場合は、minpermmaxpermmaxclient の値をチューニングすると、ページング・スペースのページングの量を減らすことができます。 詳しくは、VMM ページ置換のチューニングを参照してください。