3.1.2 メモリーの監視例
メモリーのパフォーマンスを監視する方法について説明します。
(1) 概要
メモリーを監視することによって,物理メモリーの不足を検出したり,プロセスの不正な動作を検出したりできます。
メモリーは,次の図のように,物理メモリーとページングファイルから構成されています。物理メモリーやページングファイルが十分でないからといってメモリーが不足しているだけとは限りません。このため,メモリー使用量に加えて,ページングやページフォルトなどのメモリー利用効率もあわせて監視してください。
メモリー空間の構成を次の図に示します。
|
物理メモリーが不足している場合,システム全体のパフォーマンスの低下を招きます。また,プログラムが参照するメモリー領域は,一定時間以上アクセスされないとページングファイル上に退避され,必要なタイミングで物理メモリーにロードされます。このようにして,少ない物理メモリーを有効利用します。しかし,ページングファイルへのアクセスは物理メモリーのアクセスに比べて,大幅に低速です。このため,メモリー利用効率が悪くページングやページフォルトが大量に発生している場合,システム処理の大幅な遅延が発生している状態を意味します。
-
ページング
物理メモリーとページファイルとの間で発生するコードとデータの移動を指します。ページングファイルから物理メモリーへのロードをページインと呼び,物理メモリーからページングファイルへの退避をページアウトと呼びます。
-
ページフォルト
物理メモリーに存在しない領域をアクセスすることを指します。
ページングなどは,標準的な処理でも行われています。このため,システム安定稼働時のベースラインを測定し,適切なしきい値を決定してください。
監視テンプレートでは,Available Memoryアラームを提供しています。さらに詳細な情報を参照するには,次のような関連するレコードとフィールドを参考にしてください。
使用レコード |
使用フィールド |
値の見方(例) |
---|---|---|
PI |
Pages/sec |
ページングした1秒当たりの操作数。継続してしきい値以上の場合,メモリーがシステムのボトルネックになっているおそれがある。 |
Page Faults/sec |
ページフォルトが発生した1秒当たりの数。継続してしきい値以上の場合,メモリーがボトルネックになっているおそれがある。 |
|
Data Map Hits % |
ページングが発生しないで,ファイルシステムキャッシュにページをマッピングした要求の割合。低い値が継続している場合,メモリーがボトルネックになっているおそれがある。 |
|
Total Physical Mem Mbytes |
物理メモリーの容量。 |
|
Available Mbytes |
物理メモリーの空き容量。 |
|
Used Physical Mem Mbytes |
物理メモリーの使用量。 |
|
% Physical Mem |
物理メモリーの使用率。 |
|
Commit Limit Mbytes |
仮想メモリーの容量。 |
|
Non Committed Mbytes |
仮想メモリーの空き容量。 |
|
Committed Mbytes |
仮想メモリーの使用量。継続してしきい値(PI レコードTotal Physical Mem Mbytesフィールド)以上の場合,より多くの物理メモリーが必要な可能性がある。 |
|
% Committed Bytes in Use |
仮想メモリーの使用率。継続してしきい値(システムの負荷状態で判断)以上の場合,ページングファイルの拡張が必要な可能性がある。 |
|
PD_PAGF |
% Usage |
ページングファイルの使用率。継続してしきい値(システムの負荷状態で判断)以上の場合,ページングファイルの拡張が必要な可能性がある。 |
システムのメモリー不足は,メモリー不足が原因であるとは限りません。プログラムの不具合が原因で,メモリーが不足する場合もあります。プロセスごとのメモリー使用量を監視すれば,これらの原因を切り分けることができます。不当にメモリーを占有していたり,メモリー使用量が単調に増加していたりするプロセスがある場合,そのプロセスのプログラムに不具合があると判断できます。
特定のプロセスに関するメモリー使用量を参照するには,次のレコードとフィールドを参考にしてください。
使用レコード |
使用フィールド |
値の見方(例) |
---|---|---|
PI |
Pool Nonpaged Bytes |
ページアウトできない物理メモリー使用量。サーバの活動状況が増加していない状態で,このフィールドが増加し続けている場合,メモリーリークを発生させているプロセスが存在しているおそれがある。 |
PD_PDI |
Page Faults/sec |
ページフォルトが発生した1秒当たりの数。プロセスのページフォルトからボトルネックを発生させているプロセスを洗い出す。 |
Pool Nonpaged Kbytes |
各種メモリー,ハンドル使用量。このフィールド(メモリー,ハンドル数)が増加し続けている場合,プロセスがメモリーリークを発生させているおそれがある。 |
|
Pool Paged Kbytes |
||
Working Set Kbytes |
||
Page File Kbytes |
||
Private Kbytes |
||
Handle Count |
(2) 監視方法
(a) 物理メモリーの未使用サイズを監視したい
物理メモリーの未使用サイズ(PIレコードAvailable Mbytesフィールド)は,監視テンプレートで提供しているAvailable Memoryアラームで監視できます。
詳細については,「3.2.2(1) 監視テンプレート」を参照してください。
(b) 仮想メモリーの使用状況を監視したい
仮想メモリーの使用状況は,メモリーの増設が必要かどうかの目安となります。
メモリーの使用状況が一時的に高い場合でも,継続的な高負荷状態ではないときは,パフォーマンスの低下を許容できる可能性があるため,仮想メモリーの負荷状況と合わせて監視すると効果的です。
使用している仮想メモリー使用量(PIレコードCommitted Mbytesフィールド)が,物理メモリー総量(PIレコード Total Physical Mem Mbytesフィールド)以上の場合,より多くのメモリーが必要な可能性があります。
定義例については,「3.2.2(2) 監視テンプレート以外の定義例」を参照してください。
(c) 仮想メモリーの負荷状況を監視したい
仮想メモリーの負荷状況は,メモリーの増設が必要かどうかの目安となります。
メモリーの使用状況が一時的に高い場合でも,継続的な高負荷状態ではないときは,パフォーマンスの低下を許容できる可能性があるため,仮想メモリーの使用状況と合わせて監視すると効果的です。
ページフォルト数(PIレコードPage Faults/secフィールド)がしきい値以上の場合,アプリケーションが確保するメモリー量に対して,サーバに割り当てられているメモリーが不足しているおそれがあります。
ページング数(PIレコード Pages/secフィールド)がしきい値以上の場合,物理メモリーが不足している可能性があります。
定義例については,「3.2.2(2) 監視テンプレート以外の定義例」を参照してください。
(d) メモリーリークが発生していないか確認したい
メモリーリークが発生すると余分なメモリーを消費するため,システム全体が正しく動作しません。履歴レポートの折れ線グラフで,非ページプールのメモリー量(PIレコードPool Nonpaged Bytesフィールド)が単調に増加していないか確認することで,メモリーリークが発生していないか確認できます。
起動プロセスの増減がない状態で,非ページプールのメモリー量(PIレコードPool Nonpaged Bytesフィールド)が単調に増加している場合,メモリーリークを発生させているプロセスが存在するおそれがあります。
定義例については,「3.2.2(2) 監視テンプレート以外の定義例」を参照してください。
(e) プロセスのメモリー使用量を監視したい
メモリーリークが発生していると判断した場合,原因となるプロセスを特定してください。
サーバの活動状況が増加していない状態で,各プロセスのメモリー使用量(PD_PDIレコードWorking Set Kbytesフィールドなど)をリアルタイムレポートで数分〜数十分程度監視し,表示されている折れ線グラフで増加し続けているプロセスがないか確認します。
メモリーリークを発生させているプロセスを特定し,製造元に問い合わせるなどの対策の目安となります。
定義例については,「3.2.2(2) 監視テンプレート以外の定義例」を参照してください。