Open棟梁Project - マイクロソフト系技術情報 Wiki

* 目次 [#f1cf045e]
#contents

*概要 [#w249d97a]
-メモリ管理
http://nienie.com/~masapico/doc_MemMan.html

**ワーキングセット、スタンバイリストなど [#v4e3258b]
-各々のプロセスは、ワーキングセットと呼ばれるメモリページの集合を保持している。
-ワーキングセットは、常に物理メモリ上に割り当てられるメモリページ群である。
-ワーキングセットは、物理メモリのことなので、仮想メモリとは直接関係はない。
-最小ワーキングセットサイズ ≦ ある瞬間の実際のワーキングセット ≦ 最大ワーキングセットサイズ

-ワーキングセットに含まれるメモリページの数は~
システムによって動的に変化するが、上限と下限が定められている。~
この上限と下限はSetProcessWorkingSetSize関数によって指定可能である。

--MSDN ライブラリ > リファレンス > 関数 > SetProcessWorkingSetSize~
http://msdn.microsoft.com/ja-jp/library/cc429341.aspx~
>内部動作に影響を与え、システム全体の性能に影響するため慎重に使用すること。

-プロセスがメモリ割り当てを行うと、システムはこのワーキングセットから~
未使用のメモリページを探し、これをメモリ割り当てに使用する。

***ハード ページ フォールト [#m539c3a0]
ワーキングセット中に未使用のメモリページが存在せず、メモリページの個数が上限に達している場合、ワーキングセットからメモリページを取り除き、取り除いたメモリページを必要に応じてページングファイルにスワップアウトし、新たに物理メモリ上のメモリページを割り当て、ワーキングセットに追加する。 

***ソフト ページ フォールト [#xbb1ff6c]
また、(仮想記憶上で)利用中のワーキングセットのページがトリミングによりスタンバイ リストに移動させられた際に、プロセスがこれらのページにアクセスした場合、ページは、ワーキング セットへ "ソフト ページ フォールト" で戻される。これは"ハード ページ フォールト"と比べるとディスク アクセスを必要としないので非常に高速である。

***トリミング [#f9bb2734]
ワーキングセットのサイズが過剰と判断された場合、~
アイドル時間が最も長いページからトリミングされる。

***物理メモリの再利用 [#l7dbb9b4]
プロセスが(仮想記憶上で)メモリ開放を行った場合、ワーキングセット中のメモリページがすぐに破棄されるわけではない。この場合、メモリページはワーキングセットからは取り除かれるが、スタンバイリストと呼ばれるリストに追加される。プロセスが再度メモリ割り当てを行った場合、可能ならばスタンバイリストのページをワーキングセット中に移動して再利用する。また、長時間プロセスがメモリ割り当てを行わない場合、スタンバイリストのページは自動的に破棄される。 

※ プライベート ワーキング セット 
ワーキング セットのうち、他のプロセスと共有できない(DLL、MMFを除く)メモリ ページのセット。

ソフトページフォールト - NyaRuRuの日記
http://d.hatena.ne.jp/NyaRuRu/20051022/p4

メモリ割り当てから解放までのメモリライフサイクル - TechTargetジャパン システム運用管理
http://techtarget.itmedia.co.jp/tt/news/1201/25/news02.html

・システムの起動時には、全てのメモリが未使用ページリスト(Free Page List)に入れられている。
・Windowsではゼロページスレッドが、未使用ページリストをゼロページリスト(Zero Page List)に入れる。
・プロセスは開始時に、ゼロページリストから必要なページのみを取得し、ワーキングセットを作る。
・プロセスの終了時には、ワーキングセットが未使用ページリスト(Free Page List)に戻される。
※ ゼロページスレッドによるゼロページ化はメモリ・スキャベンジ防止のセキュリティ対策のため。

なお、ワーキングセットから外れたスタンバイ リストは、通常のスタンバイ リストと変更済みページリストに分けられる。
この2つのスタンバイ リストの違いは、変更済みページリストはプログラムによって書き換えられたページであり、
ページングファイル(ディスク)に書き込まれた後に、スタンバイ リストを経由してでないとワーキングセットに戻せない点である。

このため、ワーキングセットに関するカウンタは物理メモリのOSによる管理状況を確認するために利用する。
※ アプリケーションによるメモリ使用量(仮想メモリの使用量)を確認する用途に使用するのは適切ではない。


システム キャッシュ (システム ワーキングセット)

Windows XP でシステム キャッシュ モードを有効にする場合の注意事項
http://support.microsoft.com/kb/895932/ja
XPマシンをクリーニング&チューンアップ Windows XP快適化計画 2005 - デジタル - 日経トレンディネット
http://trendy.nikkeibp.co.jp/article/tokushu/gen/20051007/113796/?P=19&rt=nocnt

システムキャッシュとは使用されていないメモリをキャッシュ領域として使用するスタンバイ リストの仕組み。
スタンバイ リスト(変更済みページリストを含む)が実質的にシステムキャッシュとなる(ソフト ページ フォールトを伴う)。

TechNet Blogs > Ask CORE > All Tags
 > リソース不足について – 番外編1 (64bit 環境での注意点)
http://blogs.technet.com/b/askcorejp/archive/2009/12/29/1-64bit.aspx

なお、システム キャッシュ (システム ワーキングセット)は、
次の 5 種類のワーキングセットが合計されたサイズになる。
パフォーマンス ログでは Memory\Cache Bytes カウンタを確認する。

・システム キャッシュ ページ
Memory\System Cache Resident Bytes

・ページ プール
Memory\Pool Paged Resident Bytes

・Ntoskrnl.exe 内のページング可能なコードとデータ
Memory\System Code Resident Bytes

・デバイス ドライバ内のページング可能なコードとデータ
Memory\System Driver Resident Bytes

・システム マップドビュー
・・・

※ システム ワーキングセットもワーキングセット (現在使用している物理メモリ領域) 

Windbgの以下のコマンドで確認できる。

0: kd> !memusage
loading PFN database
loading (100% complete)
Compiling memory usage data (99% Complete).
Zeroed: 173816 (695264 kb)
Free:      0 (     0 kb)
Standby:  71317 (285268 kb)
Modified:   1387 (  5548 kb)
ModifiedNoWrite:    561 (  2244 kb)
Active/Valid: 145881 (583524 kb)
Transition:     16 (    64 kb)
Unknown:      0 (     0 kb)
TOTAL: 392978 (1571912 kb)

以下の様なツールも存在する。

Windows Sysinternals > ダウンロード > ファイルとディスク > CacheSet 
http://technet.microsoft.com/ja-jp/sysinternals/bb897561

システム ファイル キャッシュのワーキング セットのサイズを設定できるアプレット

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS