ITよろづや

ITの参考になる情報を備忘録代わりに残していきます

Hyper-V の動的メモリ使用時の注意点 パフォーマンス、遅い、エラー問題

VMwareで仮想化基盤環境を構築している場合は、メモリのオーバーコミットで、物理サーバー以上にメモリを仮想マシンに割り当てて使用していることが多いのではないでしょうか。これは、サーバーが常にメモリを使用するわけではないので、効率よくメモリリソースを使用したいからというのが根底にあります。

 

では、VMwareではなく、Hyper-Vとなったらどうでしょうか。動的メモリ(Dynamic Memory)という機能があり、メモリの割り当てを動的に使用することができるようになるのですが、ちょっとVMwareのオーバーコミットと違うので注意が必要です。

 

個人的にはWindows Server 2016までしかHyper-Vを構築した経験がないのですが、まず、動的メモリについては以下のサイトが参考になります。

 

https://www.atmarkit.co.jp/ait/articles/1502/09/news027.html 

 

一部抜粋です。

 

Windows Server 2012 Hyper-Vでは、動的メモリの構成を「スタートアップRAM」「最小RAM」「最大RAM」「メモリバッファー」「メモリの重み」の5項目で構成するように変更されました。これにより、Windowsの起動時に必要なメモリを確保しつつ、起動後は「スタートアップRAM」より小さい「最小RAM」と「最大RAM」の範囲内でメモリ割り当てが増減されるようになりました。なお、動的メモリを有効にしない場合、「スタートアップRAM」に指定した値が静的メモリで割り当てたメモリ容量になります。

 

何が注意点かと言うと、このスタートアップメモリが起動時のメモリの割り当てになるのですが、不足すると、最大RAMまで引き上げてくれます。しかし、これが意外と遅いのです。メモリの使用率が徐々に増えてくるのであれば問題ないのですが、急激にメモリの使用率が増えた場合、その上昇に間に合わず、エラーを起こすことがあります。

 

アプリケーションによっては、メモリ不足としてエラーになることもあります。

 

同様にこういった記事もあります。

 

https://www.climb.co.jp/blog_veeam/hyperv-17157

 

以下は同じく一部抜粋です。

 

その8:動的メモリーを活用しない
SQLとExchangeサーバーで動的メモリーを使用することに否定的な専門家もいますが、それに怯む必要はありません。Dynamic Memoryはいつでも再調整できるので、最大・最小サイズを控えめに設定することをお薦めします。ただし、Dynamic Memoryの最小サイズを減らし、最大サイズを増やすと、ゲスト稼働中に固定メモリーを修正できない点には気を付けてください。

 

SQLサーバ、Exchangeサーバのメモリの使い方がわからないですが、これも急激に増えるとエラーになったりする可能性があります。VMwareのように意識せず使えるならいいですが、Hyper-Vの場合は、どうしても割り当てに時間がかかってしまうようです。

 

よって、Windows10などのPC用途だったり、急激にメモリが増加しないシステムなら利用してもいいかもしれませんが、実際に検証環境などで動作テストをしてから採用するか決めたほうがいいと思います。個人的にはすべてにおいて使える機能とは思えないので、ケースバイケースで採用したほうがいいと思います。Windows Server 2019で動作が変わったかどうかは追って、調査します。