Windows 7 SP1/Server 2008 R2 SP1の新機能「Dynamic Memory」「RemoteFX」


 6月7日~11日まで、米国のニューオリンズで開催されたMicrosoftのカンファレンス「TechED 2010」において、Windows 7 SP1とWindows Server 2008 R2 SP1に関する解説が行われた。そこで今回は、7月にもパブリックベータが開始されるという、この両サービスパックの内容に関して説明していこう。

 Windows 7 SP1/Windows Server 2008 R2 SP1において注目されるのは、Hyper-V R2のバージョンアップと、リモートデスクトップの新機能「RemoteFX」が中心となっている。これ以外は、昨年にリリースされ、Windows Updateなどで提供されているバグフィックスが中心となっている。

Windows Server 2008 R2 SP1では、RemoteFXやDynamic Memoryなどの仮想化関連の機能強化が行われているWindows 7 SP1/Windows Server 2008 R2 SP1のパブリックベータは7月に行われる

Hyper-V R2にDynamic Memoryを搭載

 Windows Server 2008 R2 SP1では、Windows Server 2008 R2で機能強化されたHyper-V R2の機能を、さらに強化している。

 今のHyper-V R2では、仮想マシンを稼働させながら、別のサーバー上に移動することができる(Live Migration機能)。また、CPUの仮想化支援機能を利用して、ハイパーバイザーでのパフォーマンス低下を極限まで小さくしている。これにより、仮想化の分野では先行しているVMwareのESX/ESXiなどのハイパーバイザーに追いついてきた。

 実際、筆者の環境でWindows Server 2008 R2のHyper-V R2を利用していると、パフォーマンスなど、多くの部分でESX/ESXiに匹敵していたが、メモリ関連に問題があった。

 Hyper-V R2では、仮想マシンを設定する時に、仮想マシンが使用するメモリ容量を確保している。例えば、8GBしかメモリがないサーバー上では、2GBの容量を必要とする仮想マシンは3台までしか起動できない。2GB×3台で6GBとなる。あと2GB残るが、ドメイン0のホストOSが動作するメモリ容量が必要となるため、仮想マシンですべてのメモリを消費することはできない。

 しかし、2GBのメモリ容量を持つ仮想マシンを複数起動しても、稼働状況によって、1GBも使用していない場合もある。仮想マシン上でメモリが余っていることになり、有効活用しているとはいえないだろう。では、仮想マシンが使用するメモリ容量を小さくすればどうか。この場合、起動できる仮想マシンの数はアップするが、本当に多くのメモリを必要とするような場合には、メモリが足りなくなり、途中で動作が止まってしまうかもしれない。

 そこで必要とされるのが、仮想マシンが使用できる最大のメモリ容量を決めておき、後は仮想マシンの動作状況に応じて、メモリを自動的に増やしていくオーバーコミット機能。これがあれば、1つのサーバー上に多数の仮想マシンを稼働させることができる。現在注目を集めているVirtual Desktop Infrastructure(VDI)においては、メモリを効率的に使用することで、1台のサーバーで収容できる仮想デスクトップの台数を飛躍的にアップすることも可能だ。

Dynamic Memoryは、仮想マシンのメモリを動的に拡張/縮減する

 今回のWindows Server 2008 R2 SP1では、動的にメモリ容量を拡張/縮減するDynamic Memoryという機能がHyper-V R2に追加された。これにより、仮想化されたサーバー上でメモリを高い効率で使用できるようになる。

 Microsoftでは、Dynamic Memoryを単なるオーバーコミット機能とは異なると説明しているが、動的にメモリを割り当てるという意味では、高度なメモリオーバーコミット機能といえるだろう。

 Dynamic Memoryのような高度なメモリ管理機能は、VMwareのESX/ESXiやXenなどでは、以前から採用されている。このため、Windows Server 2008 R2 SP1において、やっとHyper-Vは他社のハイパーバイザーに追いついてきたといえる。

 実は、Windows Server 2008のHyper-V V1の当初仕様書には、Dynamic Memoryと同じような機能が入っていたが、基本的なハイパーバイザーをリリースするということに主眼が置かれたため、最終的なリリース版では機能が落とされていた。さらに、Windows Server 2008 R2のHyper-V R2では、仮想マシンの動作を止めずに、別のサーバーに移動させるというLive Migration機能の強化に主眼が置かれたため、Dynamic Memory機能は搭載されなかった。こういった意味では、Windows Server 2008 R2 SP1で採用されたDynamic Memoryは、Hyper-Vの本来の機能を実現したものといえるだろう。

Dynamic Memoryは、仮想マシンの負荷に応じてメモリを自動的に拡張/縮減する。これにより、サーバー上のメモリを効率よく利用できる
Dynamic Memoryが利用できるゲストOSとしては、Windows Server 2003/2008/2008 R2、Vista/Windows7となるDynamic Memoryの設定画面。使用するメモリの最小、最大を設定する必要がある

Dynamic Memoryの詳細

 Dynamic Memoryは、前述したように、仮想マシンのメモリを動的に拡張/縮減する点で、他社のメモリオーバーコミット機能とは異なる。VMwareのESX/ESXiなどのメモリのHot Add/Removeは、管理者が明示的にメモリの追加や削除を行う必要があった。また、一度メモリ容量を変更すると、再度メモリを追加したり、削除したりすることはできなかった。しかし、Dynamic Memoryでは、自動的に仮想マシンが必要とするメモリを割り当てることができる。

 つまり、Dynamic Memoryでは、各仮想マシンに、仮想マシンが使用する最小/最大メモリ、仮想マシンの重み付け(ウエイト)といった設定が行われる。Dynamic Memoryは、仮想マシンが必要とするメモリ容量を負荷に応じて、動的に提供する。また、サーバー上で提供できるメモリ容量以上に仮想マシンでメモリが必要になった時は、各仮想マシンに付いているウエイトに応じて、優先度の高い順にメモリを割り当てていく。

Dynamic Memoryのアーキテクチャ。仮想マシンに仮想メモリ用のドライバを入れ、ペアレントOS上には、メモリを管理するシステムを用意する。これにより、動的にメモリが管理できる

 Dynamic Memoryを利用するためには、新しい準仮想化ドライバが必要になる。この準仮想化ドライバは、Dynamic Memoryに対応したメモリドライバが入っている。さらに、ドメイン0のペアレントOS上には、Dynamic Memoryに対応したメモリ管理システムがインストールされる。Dynamic Memoryは、ゲストOSとペアレントOSが連携して動作することになる。

 また、仮想マシンのメモリをダイナミックに拡張/縮減するため、ゲストOS自体もこういった機能に対応している必要がある。現状では、Windows Server 2003/2008/2008 R2の32ビット/64ビット版、Vista/Windows7の32ビット/64ビット版(ただしEnterprise/Ultimateに限る)だけが対応している。ほかのOSに関しては、もちろん、メモリ容量固定で動かせば、Windows XP、Windows 2000 Server/NT Serverなどを動かすことが可能だ。

 Dynamic Memoryでは、NUMAアーキテクチャのサーバーを意識した設計が行われている。NUMAアーキテクチャでは、各CPUにメモリが直結している。複数のCPU(ソケット)が搭載されているサーバーでは、別のCPUに直結されているメモリを使用すると、メモリアクセスに時間がかかりパフォーマンスロスが大きくなる。

 そこで、Dynamic Memoryでは、それぞれのCPUとメモリといったハード環境を意識して、仮想マシンや仮想マシンが使用する物理メモリを、きちんと管理しておく必要がある。例えば、あるCPU上で動作している仮想マシンが、Dynamic Memoryでメモリを拡張する時は、そのCPUに接続されているメモリを優先的に使用する。別のCPUに接続されているメモリは、使用しないようになっている。これにより、ほかのCPUに接続されているメモリを使用してしまい、メモリアクセスが遅くならないようにしている。

Dynamic Memoryでは、デフォルトが512MB。最大が64GBとなるNUMAシステムでは、各CPUやノードごとに、もっとも近いメモリを使用するようになっている

RemoteFXによりVDIが高機能化

 Windows 7 SP1/Windows Server 2008 R2 SP1で搭載されるRemoteFXは、2008年にMicrosoftが買収したCalista(カリスタ)のテクノロジーがベースとなっている機能で、GPUを仮想化して、リモートアクセスしてくるPCから、仮想化されたGPUを利用できるようにする。つまり、VDI環境においても、VistaやWindows7のAero UIを表示したり、GPUのアクセラレーション機能を利用してリモートPCでビデオを表示したりすることができる。

RemoteFXでは、3Dグラフィック、動画の再生支援、Flashの再生支援などがサーバー上のGPUで行えるRemoteFXでは、VDI環境でもAero UIが利用できる

 RemoteFXでは、サーバー側とクライアント側でリモートデスクトッププロトコル(RDP)のバージョンアップが行われ、RDP 7.1にアップグレードされている。さらに、RemoteFXでは、画面転送に専用ハードウェアを、サーバーとクライアント側で使用することになる。ただし、専用ハードウェアは、CPUとGPUを使ってソフトウェアでエミュレーションすることもできる。

 現状では、RemoteFX専用のハードウェアはリリースされていないため、当面はソフトウェアエミュレーションを利用することになる。

 Microsoftでは、RemoteFXの専用ハードウェアに関しては、仕様を公開することで、多くの企業が自社のハードウェアに内蔵することを可能にしている。現在、RemoteFXパートナーとしてAMD、NVIDIA、VIA、Wyseなどが入っているため、将来的にはAMDやNVIDIAのGPUの標準機能としてRemoteFXのハードウェア機能が搭載されるかもしれない。また、シンクライアントメーカーのWyseなどが入っているので、RemoteFXを使用したシンクライアントもリリースされるだろう。

 現状のVDI環境では、CAD/CAMなどの3Dグラフィックを多用するアプリケーションは使い物にならなかった。しかしRemoteFXを使用すれば、サーバー上のGPUを利用して、3Dグラフィックをリモート環境で利用できるようになる。また、サーバー側に高性能なGPUがあり、RemoteFXをサポートしたシンクライアントなどをクライアント側で利用する、といったケースでは、クライアント側には、それほど高いCPU/GPU性能は必要とされなくなる。

 ただしRemoteFXでは、サーバー上のGPUを仮想化して、各仮想マシン上に仮想化されたGPU(vGPU)ドライバを提供する。このため、すべてのサーバーでRemoteFXが利用できるわけではなさそうだ。OEMパートナーと共同で、RemoteFXが動作するサーバーを構成することになりそうだ。つまり、RemoteFXで使用できるGPUは、限定されたモノになる可能性が高い。

 また、サーバー上でGPUを仮想化するため、1つのGPUをどのくらいの仮想マシンで共有することができるのかなど、まだ明らかになっていないことがある。このあたりは、実際にベータテストが始まれば、さまざまなホワイトペーパーで明らかにされるだろう。

 RemoteFXでは、高度なグラフィック表示に追加して、クライアントでさまざまなUSBデバイスをサポートする予定だ。

RemoteFXでは、RDP7.1にアップグレードされているサーバー上でRemoteFXベースのVDIを実現するためには、GPUと専用のドライバが必要になる。仮想マシンには、仮想化されたGPUドライバを搭載する
サーバー上の仮想マシンでも、DirectXベースのアプリケーションやSliverlightなどのアプリケーションを仮想化されたGPUを使って動かすことができるRemoteFXでは、ペアレントOS上に専用のドライバを使ってGPUの仮想化をサポートしている。このほかRemoteFXの画面転送をサポートするチップ(ASIC)を使うこともできる
クライアント側では、RemoteFX専用のASICを使うこともできるし、ソフトウェアエミュレーションもサポートされている

 現状のRDPでも限定された形で、限られたUSBデバイスをサポートしている。しかし、USBデバイスは、USBメモリ、HDD、スキャナ、USB扇風機など、さまざまなデバイスがリリースされている。そこで、RemoteFXでは、クライアントに接続した、さまざまなUSBデバイスをサーバー側の仮想マシンにリモート接続して、利用できる仕組みが用意されている。

リモートPCに接続したさまざまなUSBデバイスを、RemoteFXを使って、サーバー上のVDI環境に簡単に接続することができるRemoteFXでは、クライアントのUSBポートをサーバー上の仮想OSにマッピングすることで、さまざまなUSBデバイスをサポートする



 Windows 7 SP1/Windows Server 2008 R2 SP1は、7月ごろにパブリックβがリリースされる予定になっている。最終的なリリースは、2010年秋から年末になる予定だ。

 Hyper-V R2にDynamic Memoryなどの機能拡張や新しいリモートデスクトップのRemoteFXの追加が行われているため、サーバーやデスクトップの仮想化に関心があるユーザーにとっては注目すべきだろう。

関連情報