特集
» 2011年02月17日 00時00分 公開

Windows OS運用:Windows 7/Windows Server 2008 R2 SP1がリリース (2/3)

[打越浩幸,デジタルアドバンテージ]

 SP1で追加された機能はいくつかあるが、ここではWindows Server 2008 R2のHyper-Vで追加されたRemoteFXとDynamic Memory機能の2つについて、簡単に解説しておく。より詳しい解説については、今後別記事で取り上げる。

Windows Server Insider関連記事 連載 仮想PCで学ぶ 第7回「VMware Playerを使う(前)
連載 仮想PCで学ぶ 第10回「Oracle VM VirtualBoxを使う(後)

 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を利用してレンダリングを行っているという点にある。次の図にその概略を示す。

RemoteFXによる仮想環境での3Dグラフィックス機能の実現

 サーバ・コンピュータに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を利用するためのシステム要件を以下に示しておく。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機能を使う手順を簡単に示しておこう。RemoteFXを利用するためには、サーバ・マネージャでHyper-V役割を追加後、「リモート デスクトップ仮想化ホスト」役割の中にある「コア サービス」と「RemoteFX」を追加する。

RemoteFX機能の追加
RemoteFXを利用するためには、リモート・デスクトップ役割にあるこの2つの機能を追加する。まず役割の追加で「リモート デスクトップ サービス」のチェック・ボックスをオンにし、この役割サービスの追加画面までウィザードを進める。
  (1)これを追加する。
  (2)これも追加する。

 Hyper-VのサーバにRemoteFX機能が追加されれば、次は各仮想マシンでRemoteFX機能を有効にする。これを行わないと、RemoteFXではなく、従来のリモート・デスクトップで利用することになる。

 まず仮想マシンの設定画面を表示させ(ゲストOSはWindows 7のUltimate SP1かEnterprise SP1にすること)、「RemoteFX 3D ビデオ アダプター」というハードウェアを追加する。

RemoteFX用デバイスの追加(1)
RemoteFXを利用したい仮想マシンの設定画面を開き、仮想GPU用のデバイスを追加する。システムを起動すると、このデバイス用のデバイス・ドライバが自動的に追加される。
  (1)これを選択する。
  (2)このデバイスを選択する。
  (3)これをクリックして、RemoteFX用のデバイスを追加する。

 次に設定画面の「RemoteFX 3D ビデオ アダプター」を開き、利用したい画面(モニター)のサイズ(解像度)と画面数を指定する。これらの設定は、ゲストOSが停止しているときにのみ変更できる。

RemoteFX用デバイスの追加(2)
RemoteFX用デバイスを追加したら、次は画面の解像度とモニタ数を設定する。これにより、仮想マシンに割り当てられる仮想的なVRAMのサイズ(実際にはグラフィックス・カード上のVRAM上に確保される)が決まる。
  (1)これを選択する。
  (2)マルチ・モニタ構成で利用した場合は、2〜4を指定する。
  (3)クライアント側に合わせて解像度を指定する。

 この画面におけるモニタとは、仮想マシンで実現するグラフィックス画面の解像度と画面数である。画面数は通常は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の利用画面の例を次に示しておく。

RemoteFXの利用例
例えばChess Titanのような3Dグラフィックスを利用するアプリケーションも実行できるし、DirectX 9を使うようなゲームも実行できる。

 このように、DirectX 9を使うようなアプリケーションも利用できるが、実際のフレーム・レート(画面の更新頻度)はせいぜい10〜20回/秒程度である(この例ではCore i5-660+Radeon HD5770という環境でテストした)。GPUを使っているので、描画は確かに速いが(ベンチマークなどを実行すると、画面更新レートは非常に高い。すべてサーバ側で実行されているから)、画面データを転送する速度などに制約を受けるので、実際のフレーム・レートはかなり低くなってしまう。ゲームなどを実行するための機能というよりは、FlashやSilverlight、Officeアプリケーションのような、少しDirectXを使うようなアプリケーションの実行に向いていると言えるだろう。

 なおVRAMが不足する場合は、次のようになり、仮想マシンが起動できない。

VRAMが不足する場合のエラーの例
RemoteFXで指定したVRAMサイズは、実際のグラフィックス・カード上のVRAMから固定的なサイズで確保される。起動時にVRAMの空き領域が不足していると、このようなエラーが出て、仮想マシンを起動できない。

 ところで、今回はRadeon HD5770というコンシューマ向けのグラフィックス・カードでテストしたが、実際に運用する場合は、サーバ向けに動作保証されたグラフィックス・カードを利用するべきである。サーバOS向けではない製品の場合、デバイス・ドライバのインストールすらできないことがあるからだ(詳細は省略するが、実はRadeon用ドライバのインストールではいくらか問題が起こった)。といっても、ATIならFireProシリーズ、NvidiaならQuadroシリーズなど、コンシューマ向けと比べると非常に選択肢が限られるのが残念である。また、サーバマシンはPCI Express x16などの拡張スロットを搭載していないことも多い。現時点では、RemoteFXを利用するためには、グラフィックス・カード選びが一番苦労するかもしれない。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。