Hyper-Vの動的メモリが遅い、割り当てに時間がかかるデメリット

Hyper-Vの動的メモリが遅い、割り当てに時間がかかるデメリットについて紹介したいと思います。ESXiの環境では、メモリについてはオーバーコミットで運営しているところが多いと思いますが、Hyper-Vの場合は、通常何も考えずにメモリを割り当ててしまうと、そのままの値が消費されてしまいます。

 

ESXiも完全予約すれば同様の動きをしますが、特に意識しなければ消費した分のメモリを使用します。

 

そこで、VMwareのオーバーコミットに近い機能としては、Hyper-Vのダイナミックメモリ、動的メモリがあります。

 

ちなみに動的メモリについては以下の公式サイトの情報が参考になります。

 

物理コンピューター上のサーバーアプリケーションの場合と同じように、仮想マシンのメモリサイズを指定する必要があります。 メモリ不足によって応答時間が大幅に長くなり、CPU または i/o の使用量が大幅に増加する可能性があるため、通常とピーク時に予想される負荷を適度に処理するようにサイズ変更する必要があります。
動的メモリを有効にすると、Windows仮想マシンのメモリのサイズを動的に変更できるようになります。 動的メモリでは、仮想マシンのアプリケーションで大きな急激なメモリ割り当てが発生しているという問題が発生した場合は、仮想マシンのページファイルサイズを増やして、動的メモリがメモリ不足に応答するまで一時的なバックアップを確保することができます。

 

「参考」

https://docs.microsoft.com/ja-jp/windows-server/administration/performance-tuning/role/hyper-v-server/memory-performance

 

 

動的メモリについては、以下の情報が詳細がかかれていて参考になります。このあたりの設定を参考に調整していきます。

 

スタートアップRAM

仮想マシンの起動に必要なメモリの量を指定します。この値は、ゲストオペレーティングシステムが起動するのに十分な高さにする必要がありますが、最適なメモリ使用率と潜在的に高い統合率を可能にするために、可能な限り低くする必要があります。

 

最小RAM

仮想マシンの起動後に仮想マシンに割り当てる必要があるメモリの最小量を指定します。この値は、32 MBから最小値まで、スタートアップRAMの値と同じ値に設定できます。

 

最大RAM

この仮想マシンが使用できる最大メモリ量を指定します。この値は、スタートアップRAMの値から1 TBの値まで設定できます。ただし、仮想マシンが使用できるメモリは、ゲストオペレーティングシステムがサポートする最大量と同じです。たとえば、最大32 GBをサポートするゲストオペレーティングシステムを実行する仮想マシンに64 GBを指定した場合、仮想マシンは32 GBを超えて使用できません。

 

メモリバッファ

仮想マシン内で実行されているアプリケーションとサービスが実際に必要とするメモリ量と比較して、Hyper-V仮想マシンに割り当てるメモリ量を指定します。仮想マシンの実行中にメモリ使用量の変化に応じてバッファを表す実際のメモリ量が変化するため、メモリバッファはパーセンテージで指定されます。Hyper-V仮想マシンのパフォーマンスカウンターを使用して、コミットされたメモリを識別し、仮想マシンの現在のメモリ要件を決定してから、バッファーとして追加するメモリの量を計算します。バッファは、次の式を使用して決定されメモリバッファ 仮想マシン内で実行されているアプリケーションとサービスが実際に必要とするメモリ量と比較して、Hyper-V仮想マシンに割り当てるメモリ量を指定します。仮想マシンの実行中にメモリ使用量の変化に応じてバッファを表す実際のメモリ量が変化するため、メモリバッファはパーセンテージで指定されます。Hyper-V仮想マシンのパフォーマンスカウンターを使用して、コミットされたメモリを識別し、仮想マシンの現在のメモリ要件を決定してから、バッファーとして追加するメモリの量を計算します。バッファは、次の式を使用して決定され
ます。メモリバッファの量=仮想マシンが実際に必要とするメモリの量/(メモリバッファの値/ 100)。

 

「参考2」

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831766(v=ws.11)?redirectedfrom=MSDN

 

ちなみに、動的メモリの利用の注意点は、割り当てに時間がかかることです。不足するとメモリを追加する動きになりますが、急速なアプリケーションの要求に対して反応できないことがあります。さらに、OSから見るとメモリサイズが都度異なるということもあるので、切り分けがしにくいです。クライアントOSに使うのはいいかもですが、サーバー用途で使用する場合は十分な検証が必要です。