[T2-401]? Effective Hyper-V R2 SP1 ? 詳説 Dynamic Memory ? で Dynamic Memory が有効になっている、
仮想マシンで Reservation の設定ができるという話がありました。
この設定は WMI で実施する必要があるとのことでしたので、先日の投稿で設定用のスクリプトを作成してみました。
?
この設定をした時の動作を軽く検証してみました。
?
■仮想マシンの Reservation の設定箇所
Hyper-V 上の仮想マシンの構成情報は XML ファイルに記載されています。
WMI で [rootVirtualization] 名前空間の [Msvm_MemorySettingData] クラスから情報を参照することもできます。
以下の情報は WMI で取得したメモリの情報になります。
Address | ? |
AllocationUnits | MB |
AutomaticAllocation | True |
AutomaticDeallocation | True |
Caption | メモリ |
Connection | ? |
ConsumerVisibility | ? |
Description | Microsoft Virtual Machine メモリの設定です。 |
DeviceID | ? |
DeviceIDFormat | ? |
DynamicMemoryEnabled | True |
ElementName | メモリ |
HostResource | ? |
InstanceID | Microsoft:A4A7173B-7DA6-42B8-8EE1-4DA2849E91184764334d-e001-4176-82ee-5594ec9b530e |
IsVirtualized | True |
Limit | 65536 |
MappingBehavior | ? |
OtherResourceType | ? |
Parent | ? |
PoolID | 15129609-B465-4916-AA13-0CF4B109ADB0 |
Reservation | 1024 |
ResourceSubType | Microsoft Virtual Machine Memory |
ResourceType | 4 |
TargetMemoryBuffer | 20 |
VirtualQuantity | 1024 |
Weight | 5000 |
?
初期状態では、[Reservation] は [VirtualQuantity (スタートアップ RAM)] と同一の設定になっています。
また、Reservation を設定するためには、[DynamicMemoryEnabled] を [True (有効)] に設定する必要があります。
DynamicMemory を有効にしていない状態では、WMI でReservation の値を設定しても設定が保存されません。
また、仮想マシンが起動している状態では変更ができないので設定をするときには仮想マシンを停止状態にする必要があります。
仮想マシンの構成ファイルは [Hyper-V のサービス (Hyper-V Virtual Machine Management)] でファイルにロックがされていますので、
XML ファイルを直接変更して Reservation の設定をすることができないようです。
そのため、WMI を使用して設定を変更する必要があるようです。
# サービスを停止すればファイルを直接変更することが可能です。
?
?
■Reservation を有効にした際の現在のメモリの遷移
Reservation を設定していない仮想マシンは、初回起動時にはスタートアップ RAM のメモリで起動され、必要に応じてメモリは
拡張されますが、最小ののメモリ設定としてはスタートアップ RAM の値になります。
# 今回は 1,024 MB をスタートアップ RAM として設定しています。
パフォーマンスモニタでメモリの使用量を確認するとメモリも一定のサイズで遷移しています。
# アプリケーションは何も実行していない状態で稼働させています。
Reservation を 784 MB に設定して、メモリの遷移を見てみたいと思います。
起動時は、スタートアップ RAM の値で起動されるという動作は変わりません。
そのまま起動した状態にししばらくすると現在のメモリが下がります。
パフォーマンスモニタを見ていると、[Memory Remove Operations] が発生し、[Physical Memory] が
減っていることが確認できます。
Reservation の設定が働き、スタートアップ RAM 以下までメモリが減っていることが確認できますね。
Reservation を 8 に設定するとどうなるかも試してみました。
# 設定の最小値は 8 になるようです。
解放できるところまで解放しているようですね。
スタートアップ RAM と Reservation の使い分けをどうするかはまだ考えていませんが、設定して動作するところまで確認してみました。