いつもお世話になっております。
現在動的メモリを構成するか、それとも静的メモリとして
固定値を割り当てるかで悩んでいます。
動的メモリの設定を行うことでパフォーマンスを犠牲にすることなく、
メモリを節約できればと考えています。
そこで検証環境を作ったところ、予想と違う挙動のようでして、
なにか私が勘違いしてるのではないか、と思い、こちらに投稿するに至りました。
ホストOSはWindows 2008 R2、ゲストOSはゲストOSはWindows 7です。
ホストOSのメモリは16Gです。
※SP含めパッチはすべて適用済みです。
まず静的メモリとして、2Gを割り当てました。
そのあと動的メモリに変更したところ、静的メモリの設定の時に比べ、
明らかにレスポンスが落ちてしまいました。
動的メモリの設定値は既定値で以下の通りです。
スタートアップ RAM:512M
最大RAM:65536M
メモリバッファー:20%
Hyper-Vマネージャー上からは
メモリの割り当て:1034M
メモリの需要:868M
と表示されています。
ゲストOSのWindows 7 に静的メモリで2G割り当てた場合と、
動的メモリとして既定値で設定した場合では私の検証結果のように
動的メモリの設定の方がレスポンスが落ちてしまうものなんでしょうか。
Hyper-Vマネージャーでメモリの割り当てが「1034M」となっているので
Windows 7で1Gちょいはそれはレスポンスが遅くて当然だろう、とは思いますが
メモリの需要が高まれば動的にメモリを増やしてくれるので
静的に事前にメモリを多く割り当ててようが、動的にメモリに確保するならば
どちらもパフォーマンスは変わらないだろうし、
同じパフォーマンスならメモリが節約できる動的メモリの方がいい、と思ったのですが
何か理解が不足しているのでしょうか。
それともゲストOSのメモリの需要が高くなったとき、
ホストOSから追加のメモリを割り当てられる処理の分、オーバーヘッドが発生しているのでしょうか。
動的メモリを構成してるときにゲストOSを操作すると、
Hyper-Vマネージャーでメモリの割り当て状態を見ながら、
ゲストOSのブラウザを立ち上げると、メモリの割り当てが2G弱までぐんぐんあがっていき、
ゲストOSがメモリ不足でホストOSからメモリをもらう際の
オーバーヘッドが発生しているように見えます。
※ちなみにメモリバッファーの設定については、設定値を増やすことで
今よりパフォーマンスは上がるとは思いますが、
今回の挙動を理解することとはまた別な話と思いましたので触れません。
知見お持ちの方おられましたら、どうぞよろしくお願いいたします。
<参考にしたHP>http://technet.microsoft.com/ja-jp/library/ff817651(v=ws.10).aspx