Windows 2008 R2 SP1 Hyper-V Dynamic Memory を使用する

Windows 2008 R2 SP1 から仮想マシンのメモリ割り当てを必要量に応じて動的に変更する事ができるDynamic Memory機能が追加されたので実際に使用してみました。


Dynamic Memory は、ホストOSとゲストOSとの間でメモリ割り当て/メモリ解放を行う仕組みで、メモリ割り当てを「ホットアド」メモリ解放を「バルーニング」といい、これらをゲストOSがサポートしている必要があります。(仮想メモリスワップイン/スワップアウトと概念には似ていますが技術的には別のものです。)


現在の所、サポートされるゲストOSは以下のOSです。また、「ホットアド」「バルーニング」をサポートするためのドライバをインストールする必要があります。(インストールは、Hyper-Vマネージャから統合サービスのインストール機能を使って行います)


Windows Server 2008 R2 Standard、Web(x64) SP1
Windows Server 2008 R2 Enterprise、Datacenter(x64)
Windows Server 2008 Standard、Web(x86/x64)SP2 *1
Windows Server 2008 Enterprise、Datacenter(x86/x64)SP2
Windows Server 2003 R2 Standard、Web、Enterprise、Datacenter(x86/x64)SP2
Windows Server 2003 Standard、Web、Enterprise、Datacenter(x86/x64)SP2
Windows 7 Enterprise、Ultimate(x86/x64)
Windows Vista Enterprise、Ultimate(x86/x64)SP1以降

KB2230887の適用が必要

参考:http://technet.microsoft.com/en-us/library/ff817651(WS.10).aspx


実際の設定方法ですが、


1.ゲストOSに Hyper-V マネージャから接続します。
2.操作(&A)-統合サービスセットアップディスクの挿入を選択しインストールを行います。
3.ゲストOSをシャットダウンします。
4.Hyper-V でゲストOSの設定で[メモリ]-[動的]を選びます。
5.ゲストOSを起動します。


メモリ設定の設定値については以下の通りです。


・スタートアップRAM(起動時に確保するメモリ、最低限確保されバルーニングでホストOSに返却される事はありません。)
・最大RAM(ホットアドによって確保できる最大メモリ。)
・メモリバッファ(空きメモリが指定したレートより少なくなるとホットアドされ、未使用メモリが指定したレートより多くなるとバルーニングされる基準)
・メモリの優先度(他のゲストOSでメモリの奪い合いが発生した時の優先順位)


ホットアドによってメモリは無限に要求されるわけではなくホストOSに最低限残るようになっています。(デフォルトで500MByte程度)最低限残るメモリ量を指定するには、レジストリに以下のキーを設定します。



キー:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization
値名:MemReserve
型 :REG_DWORD
値 :MByte単位で残存メモリ量を指定


実際に、Dynamic Memory が有効になると Hyper-V マネージャ上で[メモリ割り当て](ゲストOS上での物理メモリサイズ)[メモリ需要](ゲストOS上での使用メモリ量)が表示されるようになります。