~Windows Server 2008 R2 SP1 Beta版 検証の豆情報~
Windows Server 2008 R2 SP1ではDynamic Memoryにより、仮想マシン(VM)のワークロードの変化に応じて、ホストと複数のVM間で動的に物理メモリの割り当て量を調整できます。
Dynamic Memory利用時のメモリサイジングでは、システム全体でのワークロードのピーク時におけるVMの総メモリ使用容量とホストで必要なメモリ容量をもとに、システムの物理メモリ容量を設計することになります。ただし、各VMのワークロードのピークのタイミングが想定から外れるような場合は、システム全体として設計値を上回るメモリリソースが要求される恐れがあります。この時、メモリリソースがVMへ過剰に分配されることで、ホストで最低限必要となるメモリが不足し、システム全体の挙動に影響するのではないかという点に着目しました。
今回はDynamic Memory適用時に、ホストとVM間でどのように動的にメモリが割り当てられるかについて検証を行いました。
まず、VMがホストに搭載される物理メモリ容量を上回るメモリリソースを要求する場合、どのようにホストとVMへ物理メモリが分配されるのかを確かめました。Hyper-Vホスト上に作成した4台のVM上で、大量のメモリを消費するテストツールを起動して物理メモリ容量以上のメモリリソースを要求させ、システム全体のメモリが枯渇した状況を再現します(図1参照)。
図1 検証1の環境
この状況で各VMに割り当てられるメモリ容量をホストで測定した結果とそれから導き出されるホストの物理メモリ容量を表1に示します。
物理搭載メモリ | ホストで認識されるメモリ容量(MB) | VMによるメモリ要求量/メモリ実割当量 | メモリ測定値(MB) | 物理搭載メモリからVM1~4の総和(実割当量)を差し引いた容量(MB) | ||||
---|---|---|---|---|---|---|---|---|
VM1 | VM2 | VM3 | VM4 | VM1~4の総和 | ||||
12GB | 12279 | 要求量 | 6901 | 6904 | 6797 | 7070 | 27672 | |
実割当量 | 2840 | 2818 | 2752 | 2996 | 11406 | 873 | ||
24GB | 24567 | 要求量 | 10620 | 9465 | 9802 | 9412 | 39299 | |
実割当量 | 6556 | 5409 | 5941 | 5348 | 23254 | 1313 | ||
48GB | 49143 | 要求量 | 15381 | 15096 | 15422 | 17299 | 63198 | |
実割当量 | 11310 | 11100 | 11424 | 13206 | 47040 | 2103 | ||
72GB | 73719 | 要求量 | 23524 | 20275 | 22130 | 20720 | 86649 | |
実割当量 | 19604 | 16220 | 18140 | 16710 | 70674 | 3045 |
ホストに残るメモリ容量
この検証の結果から、VMに物理メモリ容量以上のメモリ容量を割り当てようとした場合でも、ホストには物理搭載メモリ容量に応じて一定量のメモリが自動的に残ることがわかりました。
次に、自動的にホストに残るメモリ容量が、システム全体が正常に稼働するのに十分な容量なのかを検証しました。Webサーバの負荷テストを行い、メモリが枯渇した状態とそうでない状態にてWebサーバの処理能力を取得し、その処理能力の差をもとにホストに残されたメモリリソースの有効性を検証しました。
検証2のポイント
<サーバ環境>
<メモリ状態の定義>
図2 検証2の環境
Webサーバの処理能力を測定した結果を以下に示します。
1秒あたりの要求数及び平均応答時間を比較したところ、Webサーバの処理能力にほとんど差がないことがわかりました。
状態 | Webサーバの性能測定値 | |
---|---|---|
要求数/秒 | 平均応答時間(秒) | |
システム全体でメモリが枯渇していない状態 | 8.50 | 20.10 |
システム全体でメモリが枯渇した状態 | 8.43 | 20.07 |
また、Hyper-Vのワークロードに加えて、ホストではウィルス対策ソフトウェアなどホスト自身を監視・管理するソフトウェアが動作するため、それらのソフトウェアによるメモリの使用がWebサーバの処理能力に影響を与えることも考えられます。このため、ホストにウィルス対策ソフトウェアを導入し、ウィルススキャン実行中に同様の測定を行いました。
状態 | Webサーバの性能測定値 | |
---|---|---|
要求数/秒 | 平均応答時間(秒) | |
システム全体でメモリが枯渇していない状態 | 8.69 | 20.10 |
システム全体でメモリが枯渇した状態 | 8.65 | 20.10 |
この測定結果でも、1秒あたりの要求数及び平均応答時間を比較したところ、Webサーバの処理能力に差がないことがわかりました。今回の検証からはウィルス対策ソフトウェアが動作できる程度のメモリ容量も加味された容量が、ホストに残っていると見受けられました。
以上の結果から、今回検証した範囲では、Dynamic Memoryではホストに必要となる物理メモリ容量が自動的に確保されるようになっていること、システム全体のメモリが枯渇した状況下でもホストのメモリ不足を原因としたVMの性能劣化は発生しないことがわかりました。
なお、ホストで確保する物理メモリ容量はレジストリーキー(MemoryReserve)を設定することで明示的に指定することも可能です。
[場所]HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Virtualization
[キー]MemoryReserve (MB単位)
MemoryReserve値を極端に低い値(例えば512MB)に設定してしまうと、システム全体 のメモリが枯渇した時にVM(ゲストOS)が操作できなくなるなどHyper-Vの挙動が悪化するため注意が必要です。
()参考:Visual Studio Team System - Test Edition
【ご注意】
動作確認したWindows Server 2008 R2 SP1は開発段階にあるため仕様変更の可能性があります。