Windows TIPS
[System Environment] |
Rammapツールでメモリの詳細な利用状況を調査する
→ 解説をスキップして操作方法を読む
デジタルアドバンテージ 打越 浩幸
2010/12/03 |
対象OS |
Windows Vista |
Windows Server 2008 |
Windows 7 |
Windows Server 2008 R2 |
|
|
|
■ |
メモリの利用状況を確認するにはタスク・マネージャを利用するが、詳細な利用状況は分かりづらい。 |
■ |
SysinternalsのRammapツールを利用すると、さらに詳細なメモリの利用状況を確認できる。 |
■ |
Rammapツールでは、変更済みメモリ領域などの強制フラッシュもできる。 |
|
|
TIPS「リソース・モニタでメモリの利用状況をモニタする」では、タスク・マネージャに付属するリソース・モニタ・ツールを使って、Windowsシステムのメモリの利用状況を調査する方法を紹介した。リソース・モニタはWindows Vista/Windows Server 2008以降のWindows OSで利用できる。
ただしリソース・モニタでは、全体的なメモリの利用状況は分かるが、例えば使用中のメモリ・ページがどのようなプロセスや用途(カーネル・メモリかデバイス・ドライバかファイル・キャッシュか、など)に使われているかは分からない。このような細かい利用状況は通常は知る必要がないだろうが、開発者や、高度なトラブル・シューティング作業を行うエンジニアにとっては必要な情報である。
メモリの詳細な利用状況を知るにはWindows向けデバッガ「Debugging Tools for Windows(Windows開発者向けサイト)」などを使うのが一般的だが、これは使いこなすのが簡単ではない。もう少し簡単で、分かりやすくメモリの利用状況を確認できるツールとして、SysinternalsのRammapがある。本TIPSではこのツールについて紹介する。
Rammapツールは、Sysinternalsがリリースしているシステム調査ツールの1つで、Windowsシステムのメモリの詳細な利用状況を表示できる。メモリの全般的な利用方法のほか、プロセスごとの利用状況、マッピングされているファイルの情報、メモリ・ページごとの利用状況など、非常に詳しい情報が得られる。なお動作対象はWindows Vista/Windows Server 2008以降のWindows OSとなっている。
Rammapツールのインストールと実行
Rammapツールを利用するには、上記のページからZIP形式のファイルをダウンロードしてどこか適当な場所へ解凍し、中に含まれているrammap.exeをダブルクリックして実行する。64bit Windows OS上で利用すると、64bit版のツール(Rammap64.exe)が同じ場所に生成され、それが実行される。32bit版Windowsの場合はそのまま直接実行される。
ツールを起動すると、タブ付きのウィンドウでカテゴリ別のメモリの利用状況が表示される。以下、主なタブの内容を簡単に解説する。
メモリの利用状況の表示
このツールで表示されるメモリの利用状況のマップは、Windows標準のリソース・モニタのメモリ表示をさらに詳細にしたものになっている。参考のために、リソース・モニタの画面も示しておこう(リソース・モニタについてはTIPS「リソース・モニタでメモリの利用状況をモニタする」を参照)。
|
リソース・モニタのメモリ画面 |
リソース・モニタを利用すると、タスク・マネージャより詳細なシステムの状態をモニタできる。[メモリ]タブでは、用途別のメモリの利用状況がグラフで表示され、分かりやすくなっている。 |
|
|
このタブを選択する。 |
|
|
プロセスごとのメモリの利用状況や、(メモリ・ページの)状態別のサイズなどが表示される。 |
|
これと同じ時点の状態をRammapツールで確認すると、次のように表示される。
|
Rammap起動直後の画面 |
Rammapを起動すると、メモリの用途別、状況別の利用状況(サイズ)が表示される。 |
|
|
横軸は、メモリ(メモリ・ページ)の利用状態。使用中かスタンバイか未使用か、などが分かる。リソース・モニタの物理メモリの積み上げ横棒グラフと内容はほぼ同じ。 |
|
|
縦軸は用途別の分類。 |
|
|
Rammapでは更新は自動的には行われない(更新処理が非常に重いため)。これをクリックしない限り、起動時に調査して表示した情報が更新されずにそのまま維持される。 |
|
リソース・モニタの画面と比べると、より詳しく分類して表示されていることが分かるだろう。この画面は、縦軸と横軸の表形式になっていて、横軸は各メモリ・ページの状態、縦軸は用途を表している。すべての項目を加算すると、全メモリ・サイズになる。リソース・モニタでは一番上の横軸のグラフのみが表示されていると考えてよい。Rammapでは、例えばプロセス・プライベート・メモリのうち、変更済みはいくらか、といった情報が分かる。
横軸と縦軸の各項目の意味は次の通りである。
項目 |
意味 |
横軸 |
Active |
アクティブ(使用中)なメモリ・ページ(のサイズ)。プロセス(ワーキング・セット)やデバイス・ドライバ、カーネルなどで使用されている、使用中のメモリ・ページ |
Standby |
スタンバイ状態のメモリ・ページ。変更されていない、もしくは外部ディスクへフラッシュ済みのデータを含むキャッシュ。有効なデータを保持しているが、場合によってはそのまま破棄される可能性がある |
Modified |
変更済み状態のメモリ・ページ。変更されているデータを含むキャッシュなので、破棄する前に、ディスクへの書き出しが必要 |
Modified no write |
変更済みだが、ディスクへの書き出しは不要なメモリ・ページ |
Transition |
ほかの状態へ遷移中のページ |
Zeroed |
ゼロ・クリアされた状態のページ。セキュリティのため、システムは初期状態ではすべてのページをゼロ・クリアする |
Free |
空きページ。ゼロ・クリアされていないので、使用前にクリアする必要がある |
Bad |
障害などで不良状態であると判断されたメモリ(システムによっては、起動中に不良ページを検出し、Bad状態に設定できる) |
縦軸 |
Process Private |
プロセス用メモリ |
Mapped File |
ファイル・マッピング用メモリ。ファイルはメモリ空間にマップされて利用されている |
Shared Memory |
共有メモリ |
Page Table |
仮想記憶で利用するページ・テーブル・データを保存するためのメモリ |
Paged Pool |
ディスクにページアウトすることが可能なページ |
Nonpaged Pool |
ディスクにページアウトすることが不可能なページ。常にメモリ上に存在している必要があるカーネルやデバイス・ドライバなどで利用される |
System PTE |
システム用途で利用されるページ・テーブル・メモリ。PTEはページ・テーブル中のエントリのこと |
Session Private |
ログオン・セッション用メモリ |
Metafile |
NTFSのメタファイル用メモリ |
AWE |
メモリ空間拡大用のAWE機能で利用されるメモリ |
Driver Locked |
デバイス・ドライバが利用・ロックしているメモリ |
Kernel Stack |
カーネル・スタック |
Unused |
未使用メモリ |
|
Rammapのメモリ利用状況ページの表示項目 |
Windows OSの管理下にあるメモリは、「ページ」と呼ばれる単位(通常は1ページ=4Kbytes)に分割され、用途別に割り当てられる。そのページごとの利用状況がリソース・モニタやRammapツールなどで確認できる。 |
物理メモリ・サイズの表示
「Physical Ranges」タブには、Windows OSシステムが認識している全RAM領域のリストが表示される。システムに装着しているはずのメモリ・サイズと、Windows OSが認識しているメモリ・サイズに違いがある場合は、これを見ると、どのようなメモリ・マップになっているかが確認できる。なお32bit Windows OS上で実行すると、OSが認識している部分のサイズ(一般的なクライアントWindows OSでは4Gbytes以下しか認識されない)しか表示されない。
|
メモリ領域マップ |
Windows OSシステムが認識している物理メモリ領域のマップが表示される。この例では、全メモリ空間が3つの領域に分かれて、認識されている。ちなみに、一番上はいわゆる1Mbytes以下のメモリ領域(コンベンショナル・メモリ)、2番目は4Gbytes以下の領域にあるメモリ(この直後から4Gbytesの間まではデバイス用空間)、3番目は4Gbytes以上の領域にあるメモリである。 |
|
|
メモリ領域の先頭アドレス。 |
|
|
メモリ領域の終了アドレス+1。 |
|
|
メモリ領域のサイズ。 |
|
メモリ・ページの詳細な利用情報
「Physical Pages」タブでは、メモリ・ページごとに、その用途や状態などがすべて表示される。「File Summary」や「File Details」タブでは、どのファイルがどのメモリ・ページにマッピングされているかや、どのファイル領域がマッピングされているか、マッピングされているページの状態などが表示される。
メモリ空間の強制的なフラッシュ
[Empty]メニューには、指定したメモリ・ページ領域をフラッシュさせるための機能が用意されている。例えば「Modified Page List」をフラッシュさせると、システムは変更済みデータをディスクへ書き出し、Modifiedメモリ空間を空にする(空にするように努力するだけであって、実際には例えばSystem Working Set領域を完全に空にすることは不可能である)。「Standby List」をフラッシュさせると、(何も書き出す必要はないので)すぐにスタンバイ領域が解放されて空きメモリ領域となる。
|
指定されたメモリ領域のフラッシュ |
[Empty]メニューを使うと、指定されたメモリ領域を(なるべく)フラッシュさせるように努力する。 |
|
|
例えば未書き込みのディスク・キャッシュを(なるべく速やかに)フラッシュさせるには、これを実行する。 |
|
Windows Server Insider フォーラム 新着記事