Windows Server 2008 R2 SP1の新機能~RemoteFXとDynamic MemoryによりVDI環境は進化する


 以前に、数回にわたりWindows Server 2008 R2 Service Pack 1(以下SP1)の新機能 RemoteFXとDynamic Memoryに関して解説した。両機能とも、仮想サーバー機能であるHyper-Vをさらに強化するものだが、これらは、どういう意図のもとでサービスパックに実装されることになったのか。今回は、その事情や機能などについて、マイクロソフトの担当者に、さらに詳細に話を聞いた。

 

SP1での機能強化はVDIへの対応が主眼

サーバープラットフォームビジネス本部 Windows Server製品部 エグゼクティブプロダクトマネージャーの上村昌平氏

――7月にSP1のβ版をリリースされましたが、今回のSP1はどういった機能がポイントになっていますか?

上村氏:通常、サービスパックは、バグの修正などを集積したモノで、新しい機能はあまり入れないことになっています。しかし、今回のSP1では、RemoteFXやDynamic Memoryなどの新しい機能を入れています。これは、今後マーケットが拡大していくVDI(仮想デスクトップ・インフラストラクチャ)に対応していくために、ぜひとも必要だった機能なのです。

 RemoteFXは、使っていただければ分かるように、仮想デスクトップでも、DirectXを利用したアプリケーションを表示できるようになりました。これにより、今まで仮想デスクトップで使えなかった、FlashやSilverlightのWebサイトも利用できるようになります。

 また、Dynamic Memoryは、サーバーのメモリ容量を効率使用することで、数多くの仮想デスクトップを動かすことができます。もちろん、RemoteFXやDynamic Memoryは、仮想デスクトップだけではなく、サーバーの仮想化においても大きな力を発揮すると思います。
 SP1のリリースに関しては、2011年の年明けになると思います。

 

DirectX9cをサポートするRemoteFX

コンサルティングサービス統括本部 シニアコンサルタントの佐々木邦暢氏

――RemoteFXを動かすには、どういった環境が必要になるのでしょうか?

佐々木氏:RemoteFXは、サーバー側にNVIDIAやAMDのグラフィックカードを導入することで動作します。使用するグラフィックカードとしては、サーバー向けの製品を推奨しています。ただし、ユーザーがテスト用途で利用するなら、コンシューマ用のグラフィックカードを利用することもできます。

 この時注意が必要なのは、グラフィックドライバです。コンシューマ用のビデオカードでは、Windows Server 2008 R2用のドライバがリリースされていないことがあります。この時は、Windows 7 64ビット版のドライバを使うことになりますが、本格運用の時は、ドライバの安定性などを考えて、Windows Server 2008 R2環境をサポートした、サーバー向けのグラフィックカードをお勧めします。

 もう1つ、重要なのは、グラフィックカードが搭載しているビデオメモリの容量です。RemoteFXでは、1024×768ドットの解像度を持つ仮想デスクトップの表示に75MB使用します。このため、複数の仮想デスクトップを起動する場合や仮想デスクトップの解像度を高くする場合は、できるだけ多くのビデオメモリを持つグラフィックカードの使用を勧めています。当社では、1GBのビデオメモリを持ったグラフィックカードを推奨しています。

 グラフィックカードの種類に関しては、現在のβ版では、特に制限を設けていません。特に最新のグラフィックカードでなくても、DirectX 9c以降のグラフィックカードなら問題ありません。

 また、サーバー側に、複数枚のグラフィックカードを搭載しても問題はありません。β版では、異なるメーカーのグラフィックカードを搭載すると動作しないといった制限はありません。ただし、安定性という面からは、同じメーカー、同じ世代のグラフィックカードを利用した方がいいでしょう。加えるなら、ライブマイグレーションをする場合は、同じグラフィックカードが前提になります。

RemoteFXでは、モニタ数と解像度によって、必要とするGPUのグラフィックメモリの容量が変わる。マイクロソフトでは、1GBのグラフィックメモリを推奨している(Tech-ED2010のスライドより)RemoteFXの概念図。仮想マシンには、RemoteFX専用の仮想GPUドライバがインストールされる。この仮想GPUドライバが、サーバーのDirectXを経由して、GPUに描画処理を行う

 

――RemoteFXには、専用のASICを利用するソリューションもありますが、専用ASICはどのようなことを行っているのでしょうか?

佐々木氏:RemoteFXは、DirectXをサポートした仮想デスクトップの画面イメージを圧縮して、LANで転送します。専用ASICは、圧縮された画面イメージで、解凍するために使われています。

 現在、サーバー側では、ソフトウェアが画面イメージの圧縮を行っていますが、この機能を専用ASICで圧縮するソリューションも考えられます。ただし、現状ではサーバー側の専用ASICはリリースされていません。

 クライアント側では、ThinLinxというベンダーが、専用ASICを使ってRemoteFXをサポートしたシンクライアントを発売しています。

 RemoteFXを使うと、RDP 7.0のようにビデオなどをクライアントでデコードするリダイレクション機能は使えません。すべて、サーバー側のリソースを使って画面表示して、その画面をクライアントに転送することになります。ただし、GPUが持つビデオアクセラレーション機能が利用できるので、ビデオ再生にCPUリソースが食われて、負荷が高まることはないでしょう。


RemoteFX Hardware ASICは、専用チップによりRemoteFXの処理を高速化する。チップがない場合は、ソフトウェアでエミュレーションしているTinhkLinx社のRemoteFX用シンクライアント。RemoteFXの専用ASICを採用することで、シンクライアントでありながら、仮想環境の3Dグラフィックを表示できる

 

クライアント側の対応はWindows 7 SP1のみ

――β版では、仮想デスクトップとしてWindows 7 SP1しか利用できませんが、製品版ではこのあたりは変更されますか?

佐々木氏:将来的には、Windows XPやVistaなどがサポートされる可能性もあります。しかし、当面はWindows 7だけだと思います。このあたりは、ユーザーのニーズなどによって、サポートの優先順位が変わってくでしょう。ただ、当社としては、できるだけ多くのユーザーにWindows 7へと移行していただきたいと思っています。

 クライアント側もWindows 7 SP1でRDP7.1をサポートします。これにより、Windows 7でRemoteFXが利用できるようになります。Windows XPやVistaのRDP 7.1のサポートに関しては、積極的に進める予定にしています。Mac、iPadやiPhoneなどのWindows以外のプラットフォームに関しては、当社が積極的に移植するというよりも、シトリックスなど、サードパーティのソリューションでRemoteFXを使ってもらうというスタンスです。

――RemoteFXでゲームを動かしてみたのですが、動作するゲームや動かないゲームがあったのですが?

佐々木氏:RemoteFXでは、DirectX 9cをサポートはしていますが、ゲームを動かすまでの高いパフォーマンスはなかなか出ないと思います。現在はβ版ですし、製品版になればもう少しパフォーマンスもアップしてくると思います。でも、仮想環境でゲームを動かすのは無理があるでしょう。

 ただ、RDP 7.1はリモートデスクトップ接続として利用されているため、仮想環境ではなく、物理のデスクトップをリモートで利用するということなら、リモート環境でゲームを動かすこともできるかもしれません。

Dynamic MemoryでHyper-Vは機能アップする

ページ共有は、今までの4KBのページなら同一データになる可能性が高いため、共有しやすい。しかし、ラージページを使用したWindows OSは、2MBのページに拡張されているため、同一データに可能性が少ないため、ページ共有が利用できるシーンは少ない(Tech-ED2010のスライドより)

――Dynamic Memoryは、メモリのオーバーコミット機能として、VMwareなどが採用しているページ共有を使っていませんが、これはどういった理由からですか?

山崎氏:Windows 7やWindows Server 2008 R2では、ラージページ(2MB)を採用しているため、ページを共有できる可能性が低くなっているためです。VMwareなどでは、ページ共有のために、各ページのデータをチェックして、比較しています。さすがに2MBというラージページでは、全く同じモノが存在する可能性は低くなっています。

 また、ページ共有は、メモリのチェックを行い、同じモノを共有するため、今すぐにメモリが共有されるわけではありません。メモリをチェックして、同じページを見つけ、共有するためには時間がかかります。

 さらに、共有したページが変更されて、1ビットでも異なるようになると、共有ページを解除して、同じ容量のページをメモリ上にコピーする必要があります。これが頻繁に起こると、パフォーマンスが落ちる原因になると思います。このため、Dynamic Memoryでは、ページ共有は採用していません。

 ただ、ページ共有は使いモノにならないと言うことではなく、環境に即した新しい仕組みが必要になってきているということです。例えば、コールセンターなどのように、1つの仮想イメージから、複数の仮想環境を起動する場合は、ページ共有によって、メモリがセーブされると思います。Hyper-Vでも将来的には、新たなコンセプトでページ共有的な機能が採用されると思います。

 もう1つDynamic Memoryの大きなコンセプトは、仮想環境においてページングしないということです。確かに、ディスクスワップすることで、仮想環境のメモリも多く取ることことができます。しかし、ディスクスワップは、急速にパフォーマンスを悪化させます。このことは、今までWindows OSを提供してきたマイクロソフトだからこそいえることです。

 このため、Dynamic Memoryでは「ない袖は振らない」というのをコンセプトにして、サーバーに用意されている以上のメモリは利用しないようにしています。

テクノロジー・ビジネス統括本部 インフラストラクチャー営業本部 技術グループ テクノロジースペシャリストの山崎淳一氏

――Dynamic Memoryは、メモリの最小値と最大値を決めて、動的に変化させています。他社のように、最大値だけを決めて動作するように、なぜしなかったのですか?

山崎氏:これも、ページングにかかわってきます。Dynamic Memoryでは、仮想環境が起動して、必要に応じてメモリを拡張していきます。このため、プロパティなどで確認すると、メモリの最大容量が動的に変化しています。

 もし、最大容量だけを決めて仮想環境を起動すると、メモリが割り当てられない時には、ページングを行う必要が出てきます。Dynamic Memoryでは、優先度とバッファという値を指定します。優先度は、仮想マシンの優先順位を決め、どの仮想マシンに優先してメモリを割り当てるのかを決めています。

 また、バッファの値は、システム全体で、確保しておくべきメモリ領域のパーセンテージを設定するようになっています。つまり、20%に設定した場合は、空き容量が20%を切ればメモリを個々の仮想マシンから回収し、空き容量が20%を超えれば、仮想マシンのメモリを拡張する、といった動作をしています。

 もし、2つの仮想環境が、同じタイミングでメモリの拡張を行おうとして、メモリが足りなかった場合は、優先度の高い仮想環境にメモリは割り当てられます。この場合、優先度の低い仮想環境では、メモリが足りませんといったエラーが出ることになります。

 Dynamic Memoryを使う上では、SQL Serverなど独自にメモリ管理を行っているアプリケーションを実行する場合は、注意が必要になります。このようなアプリケーションでは、起動時に使用できる最大限のメモリを確保するため、負荷が小さくなっても、メモリは最大値のままになってしまいます。

 また、アプリケーションによっては、起動時やインストール時に、指定されたメモリ容量があるかチェックしている場合があります。このようなアプリケーションを動かす時には、仮想環境が使用するメモリの最小値を、アプリケーションが起動もしくはインストールできる値にしておく必要があるでしょう。

 Dynamic Memoryでは、メモリの容量がダイナミックに変動するため、起動時やインストール時に、アプリケーションが必要とするメモリ容量が割り当てられていない可能性があるからです。

ホストページングは、メモリが足りない時にディスク上にページファイルを作ってスワップするもし、メモリに余裕がない場合、仮想マシンがページングにかかりっきりになるスラッシングが起こる。スラッシングが起こると、システムがデッドロックになったように、止まってしまうHyper-Vでは、仮想マシンのメモリをロックして、スワップしないようにしている。
関連情報