かつて山市良と呼ばれたおじさんのブログ

セイテクエンジニアのブログ  かつて山市良と呼ばれたおじさんのブログ  メモ. Hyper-Vの動的メモリ、私のベストプラクティス|セミナーフォローアップ

 

 

メモ. Hyper-Vの動的メモリ、私のベストプラクティス|セミナーフォローアップ

2026年06月12日配信
執筆者:山内 和朗

 5月20日に開催された「セイテク・シス管道場 第7回 Windows Server パフォーマンス監視の基本と新常識~正しく測る、正しく判断するための実践ポイント~」のアンケートに今後取り上げてほしいテーマとして「Hyper-Vの動的メモリのベストプラクティス」というものがありました。今回は、この要望に私なりに簡潔にお答えします。

 

【アーカイブ】セイテク・シス管道場 第7回 Windows Server パフォーマンス監視の基本と新常識~正しく測る、正しく判断するための実践ポイント~

“私の”ベストプラクティスは動的メモリを使用しないこと

 

 Hyper-Vの動的メモリ(Dynamic Memory)の“私が考える”ベストプラクティスは、VMに動的メモリを使用せずに、最適なサイズを固定(静的)で割り当てることです。あくまでも私見です。特に、VMで実行するワークロードがサーバー用途(業務サーバー、データベース、インフラサーバーなど)の場合は、固定(静的)割り当てが基本です。例えば、SQL Serverは独自の動的メモリ管理機能を持っているため、Hyper-V動的メモリとは相性があまり良くないと考えています(CPU負荷上昇やパーマンス低下など)。その他のサーバーアプリについても、物理メモリ量が変動することを想定した作りになっていない可能性を考えると、動的メモリを利用しないほうが無難だと思っています。

 VMに割り当てるメモリサイズは、パフォーマンスモニターなどを使用して、VMのパフォーマンス情報(¥Memory¥Available Bytesなど)をしばらく収集することで決定できるはずです。VMに割り当てられる物理メモリの空きがないなら、ホストに物理メモリを追加するか、メモリに余裕のある別のホストにVMを移動すればよいのです。

 Hyper-Vの動的メモリは、Windows Server 2008 R2 Service Pack(SP)1から利用可能になった機能で、VMのメモリ要求に対して、バッファーを考慮してメモリを動的に追加、または回収する機能です。Windows Server 2008 R2 SP1では、リモートデスクトップサービス(RDS)で仮想デスクトップインフラストラクチャ(VDI)展開がサポートされましたが、以下のドキュメントで説明されているように、VDI環境は動的メモリの使用が有効な数少ない例の1つです。

Hyper-V 動的メモリの概要|Windows Server(Microsoft Learn)

 上記のドキュメントでは、“特にプールされた VDI 環境など、アイドル状態の仮想マシンや負荷の低い仮想マシンが多数存在する環境では、コストが削減される可能性があります。”と説明されています。動的メモリはメモリが高価だった当時、メモリの使用を最大化して、コストを削減するためのものです。VDI環境では、リソースの要求が多種多様な多数のVMが同じホスト上に共存することになるため、動的メモリはリソース利用の最適化に有効でした。しかし、メモリが安価になり、ホストに大容量のメモリを搭載できるようになった現在、動的メモリの利点は以前ほど大きくなくなりました。動的メモリが有効だったVDI環境についても、現在は、Azure Virtual DesktopやWindows 365クラウドPCなど、リソース利用の効率性を顧客が考えなくてよいクラウド利用が一般化しており、オンプレミスに(リソース管理が必要な)VDI基盤を大規模に構築するケースは以前より減少していると思います。


 また、最近のWindowsバージョンのメモリ管理技術では、メモリが利用可能な場合に、キャッシュやスタンバイなど、パフォーマンス向上のためにメモリを積極的に使用します。そのため、動的メモリを有効にしてメモリが回収される状況は、キャッシュがクリアされることでVMのパフォーマンスを低下させる可能性があります。不要になったメモリを回収するというHyper-Vの動的メモリの考え方は、現在のWindowsのメモリ管理設計と必ずしも一致しないのです。さらには、ホストに余裕がある限りVMにメモリを追加し続けるため、アプリのバグによるメモリリークを見逃す恐れもあります(画面1)。

 

画面1 動的メモリが有効だと、メモリリークの問題に気付きにくい(この例では、メモリリークを意図的に発生)
画面1 動的メモリが有効だと、メモリリークの問題に気付きにくい(この例では、メモリリークを意図的に発生)

 

動的メモリのためのかつてのチューニングはもう不要

 

 現在、動的メモリが有効な環境があるとすれば、高度に集約された仮想環境か、リソースが限られた検証環境くらいでしょう。高度に集約された仮想環境では、動的メモリを利用することで、VM間でメモリを効率的に、動的に再配分でき、物理メモリの利用率を向上できます。検証環境では、少ないリソースでできるだけ多くのVMを同時実行できます。

 ちなみに、Windows ServerのHyper-Vで動的メモリが登場した当初は、動的メモリによるホストのメモリ不足を回避するために、ホストにメモリを予約する方法(MemoryReserveレジストリ値)が用意されていました。現在のWindows Serverでは、ホストの管理OSやフェールオーバークラスターサービスを実行するために排他的に使用するメモリ量が自動的に計算されて予約されるため、手動でのチューニングは不要です。

 私が会社から提供されているHyper-Vの検証環境は、メモリリソースが潤沢です。そのため、私のVMのメモリ割り当ては固定一択です。

 

blog_yamanxworld_subscribe

blog_yamanxworld_comment

blog_yamanxworld_WP_ws2025

最新記事