次はWindows Server 2008 R2 SP1のHyper-Vにおけるもう1つの目玉機能、Dynamic Memoryについて見てみよう。
Dynamic Memoryとは、仮想マシンの実行状況に合わせて、メモリの割り当てを最適化する機能である。最初は少ないメモリで仮想マシンを作成して起動し、その後、メモリの使用量が増えるに従って、メモリ割り当てを増加させる。これにより、各仮想マシンに最初から多くのメモリを割り当てるという無駄を防ぐことができる。各仮想マシンに対するメモリ割り当てを必要最小限に限定できるので、システム全体としてみると、より多くの仮想マシンを実行できる可能性がある。
メモリ割り当ての進行状況を次の図に示す。例えば最初512Mbytesのメモリを割り当てて仮想マシンを起動するとする。
仮想マシンの実行が進み、使用中のメモリ・サイズがある程度(例えば割り当てサイズの80%)まで増えたとする。すると仮想マシンのモニタはその状況を検知し、200Mbyteのメモリを追加割り当てする。これにより、仮想マシンはページのスワップ・アウトなどを行うことなく、新しいメモリを獲得して、実行を続行できる。このように、実行中にメモリ・サイズを増やすことを「ホットアッド」という。スワップ・アウトする代わりに、ハイパーバイザにメモリを要求していると考えればよいだろう(メモリを要求しても本当に空きがなくてメモリが割り当てられない場合は、スワップ・アウトするなどの処理が行われる)。
実行が進んでまたメモリが不足すると、さらに新しいメモリを割り当ててもらい、処理を継続する。
だがメモリ・サイズは増えるばかりではない。アプリケーションの実行が終了してメモリ領域が余れば(そしてどこかほかの仮想マシンがメモリを要求していれば)、その領域をシステムに返却することもある。これをバルーニングという。
Windows Server 2008 R2 SP1のHyper-Vでは、このホットアッドとバルーニングを使って、各仮想マシンに必要最低限のメモリを効率よく割り当てている。
ところでこのような仕組みを実現するためには、ゲストOS側の協力が欠かせない。ある種のハイエンドのサーバ・システムでは、その実行中にメモリを増減する機能を持っている。メモリが不足すれば、システムを実行した状態のままメモリを追加できるし、メモリ・モジュールの故障が発生すれば、その部分のメモリを切り離すということができるのである。そしてWindows Server OSのDatacenterやEnterpriseエディションでは、その機能を生かすため、実行中にメモリ・サイズが変更されても動作するように作られている(もちろん、メモリの増減を通知するハードウェア機能などと連携して動作する)。
だが、通常のOSではそのような機能を持っていない。そのためWindows Server 2008 R2 SP1のHyper-Vでは、ホットアッドやバルーニングを利用するために、ゲストOSにそれをサポートする機能を追加する必要がある。具体的には、Windows Server 2008 R2 SP1のHyper-Vに付属の統合機能をインストールすると、この機能が利用可能になる。統合機能を利用しない場合や、古いバージョンの統合機能を利用する場合は、実行中にメモリ・サイズを変更できず、最初に仮想マシンの設定画面で設定したままになる。
以下にホットアッドなどを利用するためのゲストOSの要件を示しておく。これらのOSで、さらに統合機能をインストールした場合にのみ、Dynamic Memoryが利用できる。
Dynamic Memoryを利用できるゲストOS | |
---|---|
Windows Server 2008 R2 Standard、Web、Enterprise、Datacenter | |
Windows 7 Ultimate(x86/x64) | |
Windows 7 Enterprise(x86/x64) | |
Windows Server 2008 Standard、Web、Enterprise、Datacenter SP2(x86/x64) | |
Windows Vista Ultimate SP1以降(x86/x64) | |
Windows Vista Enterprise SP1以降(x86/x64) | |
Windows Server 2003 R2 Standard、Web、Enterprise、Datacenter SP2(x86/x64) | |
Windows Server 2003 Standard、Web、Enterprise、Datacenter SP2(x86/x64) | |
Dynamic Memoryを利用できるゲストOS |
Dynamic Memoryの設定は次の画面のとおりである。動的に割り当てる場合は、初期値と最大値、バッファ・パラメータを指定する。
実行中の仮想マシンのメモリ・サイズは、通常はタスク・マネージャで確認できるが、Dynamic Memoryが有効な場合はハイパーバイザに返却して未使用になっている部分があるので、これでは正確なメモリ割り当て量は分からない。実際にいくらメモリが割り当てられているかは、Hyper-Vマネージャの画面で確認できる。
今回はSP1の概要について簡単に説明してきた。RemoteFXやDynamic Memoryの詳細については、次の記事を参照していただきたい。
「運用」
Copyright© Digital Advantage Corp. All Rights Reserved.