[運用]
Windows 7/Windows Server 2008 R2 SP1がリリース

3.効率的なメモリ割り当てを可能にするDynamic Memory

デジタルアドバンテージ 打越 浩幸
2011/02/17
Page1 Page2 Page3

 次はWindows Server 2008 R2 SP1のHyper-Vにおけるもう1つの目玉機能、Dynamic Memoryについて見てみよう。

 Dynamic Memoryとは、仮想マシンの実行状況に合わせて、メモリの割り当てを最適化する機能である。最初は少ないメモリで仮想マシンを作成して起動し、その後、メモリの使用量が増えるに従って、メモリ割り当てを増加させる。これにより、各仮想マシンに最初から多くのメモリを割り当てるという無駄を防ぐことができる。各仮想マシンに対するメモリ割り当てを必要最小限に限定できるので、システム全体としてみると、より多くの仮想マシンを実行できる可能性がある。

 メモリ割り当ての進行状況を次の図に示す。例えば最初512Mbytesのメモリを割り当てて仮想マシンを起動するとする。

Dynamic Memoryによるメモリのオンデマンド割り当て

 仮想マシンの実行が進み、使用中のメモリ・サイズがある程度(例えば割り当てサイズの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の設定
Dynamic Memoryを利用すると、必要なメモリだけを仮想マシンに割り当てることができる。
デフォルトはこちら。従来はこの方法しかなかった。
Dynamic Memoryを利用する場合はこちらを選択する。
メモリ・サイズの初期値。
最大値。デフォルトでは64Gbytesとなっているが、実際には、割り当てるメモリがなければ要求は拒否され、ここまで増大することはない。
空き領域がここで指定した割合のあたりまで低下すれば、新たにメモリ領域を割り当てるし、多すぎればシステムに返却する(ことがある)。

 実行中の仮想マシンのメモリ・サイズは、通常はタスク・マネージャで確認できるが、Dynamic Memoryが有効な場合はハイパーバイザに返却して未使用になっている部分があるので、これでは正確なメモリ割り当て量は分からない。実際にいくらメモリが割り当てられているかは、Hyper-Vマネージャの画面で確認できる。

Dynamic Memoryを使った仮想マシン
Hyper-Vの仮想マシンでDynamic Memoryを有効にすると、仮想マシンから見える物理メモリ・サイズと、実際に仮想マシンに割り当てられているメモリ・サイズには違いがある。現在割り当てられている正確なサイズはHyper-Vマネージャなどで確認する。
この仮想マシンには、先ほどの設定画面のように、最初は512Mbytesのメモリを割り当てていた。だがDynamic Memoryのホットアッド機能により、実行の途中でメモリ・サイズが増加している。現在ではこのように1933Mbytesまで増えている。
仮想マシンに割り当てられているメモリのサイズ。
現在実際に割り当てられているサイズは1276Mbytes。残りのメモリはハイパーバイザへ返却されている。

 今回はSP1の概要について簡単に説明してきた。RemoteFXやDynamic Memoryについては、今後より詳しく解説する予定である。End of Article

 

 INDEX
  [運用]Windows 7/Windows Server 2008 R2 SP1がリリース
    1.SP1の概要とインストール
    2.仮想環境で3Dグラフィックスを可能にするRemoteFX
  3.効率的なメモリ割り当てを可能にするDynamic Memory

 運用

TechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH