SP1で追加された機能はいくつかあるが、ここではWindows Server 2008 R2のHyper-Vで追加されたRemoteFXとDynamic Memory機能の2つについて、簡単に解説しておく。より詳しい解説については、今後別記事で取り上げる。
RemoteFXは、Windows Server 2008 R2 SP1のHyper-Vで強化された点の1つで、仮想マシン環境において3Dグラフィックス(Direct3D)を利用可能にする新しい技術である。今までのHyper-Vの仮想マシンでは、グラフィックスは2Dのみに限定されており3Dグラフィックス機能は利用できなかった。他社の仮想環境、例えばVMwareのVMware PlayerやOracleのVirtualBoxなどでは、遅いながらもソフトウェア・エミュレーションによる3Dグラフィックを実現していた(関連記事参照)。DirectXと言えばゲームをするためと思うかも知れないが、実際にはマルチメディア系のアプリケーションで利用されることもあるし、SilverlightやOffice 2010のPowerPoint(ビデオ再生など)、Flash Playerなど、Office系アプリケーションでも利用されることがある、身近な機能である(もっともこれらのアプリケーションではDirectXは必須機能ではなく、あれば利用する、といった程度であるが)。
3Dグラフィックスに対する要望に応えるため、Windows Server 2008 R2 SP1のHyper-Vでは、仮想マシンで3Dグラフィックス機能を利用する技術「RemoteFX」を実装した。これは、リモート・デスクトップ上で3D機能を実現していた米Calista Technologies社を買収して開発したものである。
RemoteFXの3D技術が先ほどのVMware PlayerやVirtualBoxと最も異なる点は、サーバOS上でGPUを利用してレンダリングを行っているという点にある。次の図にその概略を示す。
サーバ・コンピュータにGPUを搭載したグラフィックス・カードが載っている点に注意していただきたい。3Dグラフィックスを実現する方法はいろいろあるが、RemoteFXではサーバにグラフィックス・カードを装着し、それを使って3Dグラフィックス機能を実現している。各仮想マシン(図中の「ゲストOS」)には仮想のGPUハードウェアを駆動するドライバ(vGPUドライバ)がインストールされている。各仮想マシンは仮想のGPUに対して描画コマンドを発行するが、それらのコマンドはグラフィックス・カードへ送られ、そこで実際に描画が行われる。もちろん、複数の仮想マシンからの描画が重ならないように、VRAMを分割して利用している。これにより、ソフトウェア・エミュレーションでは得られない高度な機能の実現や、非常に高速な描画(ハードウェア本来が持つ速度での描画)が可能となる。
描画されたVRAM上のバッファの内容(ビットマップ・データ)は、リモート・デスクトップ・プロトコル7.1(RDP 7.1)を使って、クライアント・コンピュータに転送され、そのウィンドウ上に表示される。これにより、リモート・デスクトップ・クライアントで接続しながらも、3Dグラフィックスが利用できるというわけである。
ところでこのRDP 7.1は従来のプロトコル(RDP 7.0以下)とは異なり、新しい転送方式を採用している。従来は2Dのグラフィックスを想定していたため、画面データの差分や描画コマンドなどを送信するだけでも十分であった。通信回線の帯域が少ない場合は、送信するデータを間引いたり、省略したりして通信量を抑えていた。
だが3Dグラフィックスの場合は、画面全体の更新が多く(例えばゲームなどでは、画面全体を利用するものが多い)、2D向けの送信アルゴリズムはあまり適していない。どちらかというと、ビデオ画面のように画面全体を効率よく送信して更新することが望まれる。そこで従来のRDP 7.0とは異なり、ビットマップを効率よく更新するプロトコルを採用している。データの圧縮、エンコードにはGPUの機能も使って、ホストのCPUの負荷を抑えている。また、このようなエンコードを行う専用ハードウェアを追加して利用することもできる。このようなハードウェア機能は従来のシン・クライアント端末(リモート・デスクトップの専用端末)にも十分実装できる程度のものであり、今後そのような端末が発売される予定があるとのことである。
RemoteFXを利用するためのシステム要件を以下に示しておく。RemoteFXは、本来はVDI機能の1つとして提供されているものであるが、今回はHyper-Vのサーバ1台、クライアント1台という構成で利用するケースを取り上げる。詳細な要件は「Hardware Considerations for RemoteFX[英語](TechNetサイト)」を参照していただきたい。
項目 | 内容 |
---|---|
サーバCPU | Hyper-Vが実行できるだけでなく、仮想環境におけるページングを高速化するSLAT(Second Level Address Translation。Intel EPTやAMD RVIなど)機能を持っていること。最近(2009年半ば以降)のCPUならばほとんど持っているはず |
GPU | 3D処理をサポートするGPUを搭載したグラフィックス・カード。必須。GPUの速度も重要だが、多数のRemoteFXクライアントをサポートするためには、なるべく多くのグラフィックス・メモリ(VRAM)を持つものが望ましい。複数のGPU(グラフィックス・カード)を利用することもできるが、その場合はすべて同じ仕様が要求される。ドライバはDirectX 9.0cとDirectX 10.0をサポートしたWDDM形式のもの |
RemoteFXエンコーダ・ハードウェア | オプション。あればビットマップ・データのエンコード処理の負荷が軽減される |
サーバOS | Windows Server 2008 R2 Standard/Enterprise/Datacenterエディション。Web ServerエディションやIA64は不可 |
Hyper-V役割 | Hyper-V役割を追加後、さらにリモート・デスクトップ役割も追加する |
RemoteFXのサーバ側(Windows Server 2008 R2 SP1側)の要件 |
項目 | 内容 |
---|---|
ゲストOS | Hyper-V上で実行する仮想マシンのOSは、Windows 7 Ultimate/Enterprise SP1が必要。ほかのエディションではRemoteFXは利用できない。なお従来のRDPの通信(Windowsファイアウォールのルール名は「リモート デスクトップ接続」)以外に、新しく「リモート デスクトップ - RemoteFX」というルールも許可しておかなけれならない |
RemoteFXのゲストOSの要件 |
項目 | 内容 |
---|---|
Windows PCの場合 | クライアント・コンピュータのOSは、Windows Server 2008 R2 SP1かWindows 7 SP1であること。RDP 7.1をサポートしたリモート・デスクトップ接続アプリケーションは、現在のところ、これらのWindows OSでしか利用できないから(将来はほかのOS向けにもRDP 7.1をサポートしたプログラムが提供される予定)。RDP 7.0もしくはそれ以下のバージョンのもので接続すると、従来どおりの2Dのみのサポートとなる |
シン・クライアント端末の場合 | RDP 7.1をサポートしたシン・クライアント端末 |
RemoteFXのクライアント側の要件 |
先ほどの図で分かるように、RemoteFXを利用するためには、RDP 7.1プロトコルをサポートしたリモート・デスクトップのクライアント・プログラム(もしくは専用ハードウェアであるシン・クライアント端末)が必要である。従来のHyper-Vでは、仮想マシンのコンソール画面を表示するためにvmconnect.exeというプログラム(「仮想マシン接続」アプリケーション)を利用していたが(TIPS「Hyper-Vの仮想マシンへのショートカットを作成する」参照)、これはRemoteFXのデスクトップ画面を表示するためには利用できない。vmconnectを利用した場合、ゲストOSのブート画面は表示されるが、ゲストOSが起動してRemoteFXのドライバが有効になった時点で、vmconnectの画面には何も表示されなくなる(「ビデオ リモート処理の接続は解除されました」と表示される)。その後は、リモート・デスクトップ接続経由でしか仮想マシンにアクセスできなくなるので注意する。
RemoteFX機能を使う手順を簡単に示しておこう。RemoteFXを利用するためには、サーバ・マネージャでHyper-V役割を追加後、「リモート デスクトップ仮想化ホスト」役割の中にある「コア サービス」と「RemoteFX」を追加する。
Hyper-VのサーバにRemoteFX機能が追加されれば、次は各仮想マシンでRemoteFX機能を有効にする。これを行わないと、RemoteFXではなく、従来のリモート・デスクトップで利用することになる。
まず仮想マシンの設定画面を表示させ(ゲストOSはWindows 7のUltimate SP1かEnterprise SP1にすること)、「RemoteFX 3D ビデオ アダプター」というハードウェアを追加する。
次に設定画面の「RemoteFX 3D ビデオ アダプター」を開き、利用したい画面(モニター)のサイズ(解像度)と画面数を指定する。これらの設定は、ゲストOSが停止しているときにのみ変更できる。
この画面におけるモニタとは、仮想マシンで実現するグラフィックス画面の解像度と画面数である。画面数は通常は1つでよいだろうが、マルチモニタ構成で利用したい場合は、2とか3、4にする。解像度は、クライアント側のサイズに合わせて設定する。
なおこのモニタ設定を変更すると、仮想マシンに割り当てられるグラフィックスVRAMのサイズが変わる。また、サーバに装着したグラフィックス・カードのVRAMからその仮想マシンに対して実際に割り当てられることになるので、実際のVRAMの総容量と、RemoteFXを利用したい仮想マシンの総数に基づいて決める必要がある。
最大解像度 | 1画面 | 2画面 | 3画面 | 4画面 |
---|---|---|---|---|
1024×768 | 75Mbytes | 105Mbytes | 135Mbytes | 165Mbytes |
1280×1024 | 125Mbytes | 175Mbytes | 225Mbytes | 275Mbytes |
1600×1200 | 184Mbytes | 257Mbytes | 330Mbytes | 不可 |
1920×1200 | 220Mbytes | 308Mbytes | 不可 | 不可 |
RemoteFXの最大サポート解像度と割り当てられるVRAMサイズ 解像度と画面数を指定すると、そのサイズ分だけ実際のグラフィックス・カードからVRAM領域が確保される。従って、意味もなく大きな解像度を指定すると、VRAMを余計に使うことになる。なお解像度はこの4種類しか選択できない(カスタマイズは不可)。例えば1920×1050で利用したければ、1920×1200を選ぶしかない。 |
例えば1280×1024の解像度でRemoteFXを利用したい場合、モニタ数=1、最大解像度=1280×1024を選択する。するとその仮想マシンからは、125MbytesのVRAMを持つ仮想グラフィックス・カードが見えることになる。と同時に、Hyper-Vのサーバに装着したグラフィックス・カードからは、125Mbytes分のVRAMがその仮想マシンに割り当てられることになる。
もしグラフィックス・カードのメモリが512Mbytesしかなければ、このような仮想マシンは最大でも3台しか作成できないことになる。4台分だと125Mbytes×4=500Mbytesだが、これではホストOSが表示に利用するVRAMがなくなるからだ。実際には、4台目を起動しようとした時点で、リソース不足(VRAM不足)のエラーになり、起動できない。この場合は、4台目はRemoteFXの利用をあきらめるか、RemoteFXを利用するほかの仮想マシンを停止するしかない。なおRDP 7.0で仮想マシンに接続すると、RemoteFXは利用できないが(従来のように、2Dのみのデスクトップになる)、VRAMは確保されたままである。RemoteFXを利用したくない場合は、先ほど追加したハードウェア・デバイスを設定画面で削除する。
RemoteFXの利用画面の例を次に示しておく。
このように、DirectX 9を使うようなアプリケーションも利用できるが、実際のフレーム・レート(画面の更新頻度)はせいぜい10〜20回/秒程度である(この例ではCore i5-660+Radeon HD5770という環境でテストした)。GPUを使っているので、描画は確かに速いが(ベンチマークなどを実行すると、画面更新レートは非常に高い。すべてサーバ側で実行されているから)、画面データを転送する速度などに制約を受けるので、実際のフレーム・レートはかなり低くなってしまう。ゲームなどを実行するための機能というよりは、FlashやSilverlight、Officeアプリケーションのような、少しDirectXを使うようなアプリケーションの実行に向いていると言えるだろう。
なおVRAMが不足する場合は、次のようになり、仮想マシンが起動できない。
ところで、今回はRadeon HD5770というコンシューマ向けのグラフィックス・カードでテストしたが、実際に運用する場合は、サーバ向けに動作保証されたグラフィックス・カードを利用するべきである。サーバOS向けではない製品の場合、デバイス・ドライバのインストールすらできないことがあるからだ(詳細は省略するが、実はRadeon用ドライバのインストールではいくらか問題が起こった)。といっても、ATIならFireProシリーズ、NvidiaならQuadroシリーズなど、コンシューマ向けと比べると非常に選択肢が限られるのが残念である。また、サーバマシンはPCI Express x16などの拡張スロットを搭載していないことも多い。現時点では、RemoteFXを利用するためには、グラフィックス・カード選びが一番苦労するかもしれない。
Copyright© Digital Advantage Corp. All Rights Reserved.