vmstat コマンドによるメモリー使用量の判別
vmstat コマンドは、システム内の全プロセスによって使用されるアクティブ な仮想メモリーの合計の要約ばかりでなく、 フリー・リスト上の実メモリー・ページ・フレームの数も示します。
アクティブ仮想メモリーは、実際にタッチされた仮想メモリーの作業セグメント・ページの数で定義されます。 この数は、 アクティブ仮想メモリー・ページの一部がページング・スペースに書き出されている可能性があるので、 マシン内の実ページ・フレームより大きい場合があります。
# 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」値が小さくなることは確かです。
- avm
- page
ページ・フォールトとページング・アクティビティーに関する情報。 これらは間隔内で平均され、1 秒当たりの単位で示されます。
- re 注: この欄は現在サポートされません。
- pi
pi 欄には、ページング・スペースからページインされるページの数が詳しく表示されます。 ページング・スペースは、仮想メモリーの一部で、ディスクに常駐している部分です。 これは、メモリーがオーバーコミットされたときのオーバーフローとして使用されます。 ページング・スペースは、実メモリーからスチールされた作業セット・ページのストレージ専用の論理ボリュームで構成されています。 プロセスがスチールされたページを参照すると、ページ・フォールトが起こるので、 そのページをページング・スペースからメモリーに読み込む必要があります。
ハードウェア、ソフトウェアおよびアプリケーションの構成が多様なので、 注意すべき絶対的数は存在しません。 このフィールドは、ページング・スペース・アクティビティーのキー・インディケーターとして重要です。 ページインが発生した場合は、その前にそのページのページアウトがあったはずです。 メモリー制約環境では、各ページインによって強制的に異なるページがスチールされ、その結果、 ページアウトが行われることもよくあります。
- po
「po」欄には、ページング・スペースにページアウトされるページの数 (率) が表示されます。 作業用ストレージのページがスチールされると必ず、それがまだページング・スペースに常駐していないかまたは変更されている場合は、 ページング・スペースに書き込まれます。 そして再度参照されなければ、 プロセスが終了するかスペースを放棄するまで、ページング・デバイスに存在し続けます。 その後で不在になったページに含まれているアドレスを参照すると、 ページ・フォールトになり、そのページはシステムによって個々にページインされます。 プロセスが正常に終了すると、そのプロセスに割り当てられたページング・スペースは解放されます。 システムが多数の永続ページを読み込んでいる場合、対応する pi が増加しないのに、po が増加することに気付く場合があります。 これは必ずしもスラッシングを示しているわけではありませんが、アプリケーションのデータ・アクセスのパターンを調査する必要があります。
- fr
その間隔中に、ページ置換アルゴリズムによって解放された 1 秒当たりのページ数。 VMM ページ置換ルーチンは、ページ・フレーム・テーブル (つまり PFT) をスキャンするとき、 使用可能メモリー・フレームのフリー・リストの補充に、どのページをスチールするかの選択の基準を使用します。 この基準には、両方の種類のページ、作業 (計算) およびファイル (永続) ページが含まれます。 ページが解放されているだけでは、何らかの入出力が行われたことを意味することにはなりません。 例えば、永続ストレージ (ファイル) ページが変更されていない場合、そのページは元のディスクに書き出されません。 入出力が不要であれば、ページの解放に最低のシステム・リソースしか必要としません。
- sr
その間隔中に、ページ置換アルゴリズムによって調べられた 1 秒当たりのページ数。 ページ置換アルゴリズムは、ページ置換しきい値の要件を満たすほど十分にスチールするために、多くのページ・フレーム をスキャンしなければならない場合があります。 sr 値が fr 値よりも高くなればなるほど、 ページ置換アルゴリズムがスチール対象の適格なページを見つけるのが難しくなります。
- cy
クロック・アルゴリズムのサイクル数/秒。 VMM は、クロック・アルゴリズムと呼ばれている手法を使用して、置き換えるページを選択します。 この手法は、各ページの被参照ビットを利用して、最近どのページが使用 (参照) されたかを示すものです。 ページ・スチール・ルーチンは、呼び出されると、PFT 内を巡回して、各ページの被参照ビットを調べます。
「cy」欄は、ページ置換コードが PFT をスキャンした回数/秒を示します。 フリー・リストは PFT のスキャンを完了せずに補充することができ、 また vmstat フィールドはすべて整数で報告されるので、 このフィールドは通常はゼロになっています。
- re
システムに適した RAM の量を判別する 1 つの方法は、vmstat コマンドによって報告された avm の最大値を調べることです。 それに 4 K をかけてバイト数を求めてから、結果をシステム上の RAM のバイト数と比較します。 理想的には、avm は合計 RAM より少なくする必要があります。 多い場合は、多少の仮想メモリーのページングが行われます。 発生するページングの量は、2 つの値の差によって決まります。 仮想メモリーのアイデアは、 実際にある以上のメモリーのアドレッシングの能力が得られる (メモリーの一部は RAM にあり、 残りはページング・スペースにある) ということです。 しかし、実メモリーをはるかに超える仮想メモリーが存在する場合は、 この方法によって大量のページングが行われ、その結果遅延が発生する恐れがあります。 avm が RAM より少ない場合は、RAM がファイル・ページでいっぱいになったために、 ページング・スペースのページングが起こる可能性があります。 そのような場合は、minperm、maxperm、 maxclient の値をチューニングすると、ページング・スペースのページングの量を減らすことができます。 詳しくは、VMM ページ置換のチューニングを参照してください。