2013年10月27日日曜日

クラウドゲーミングのサーバープラットフォームについてのメモ

調べたのでメモ

NVIDIA一択

クラウドゲーミングをエンタープライズレベルで運用するには次の3点に絞られると思う。
  1. 自社で運用できるHypervisor(Vmware、Xen、Hyper-V)などで運用する
  2. AWSで運用する
  3. 既存のクラウドゲーミングプラットフォームプロバイダを使う
まず、この3点どれをとってもNVIDIAの選択以外になさそう。GPUを出している半導体メーカが多くなく、クライアント向けからGPGPUも実現できるほど幅広いソリューションがあるのでNVIDIAのベンダーロックインはあまり問題になることはないと思う。


自社運用の選択

サーバーの自社運用は取り回しのしやすさがあるので金額次第では捨てることができないカード。

サーバーアプライアンス


NVIDIA GRID VCA(Visual Computing Appliance)の仮想環境からグラフィックカード、NASまで搭載されいるのでとりあえずこれを1台買えばあらゆるニーズに対応できそうではある。
GPUはGRID K2が最大で8枚まで搭載できXeon E5ファミリーが2ソケット搭載される。

価格はフルカスタマイズで292万(サーバー本体)+50万(仮想サーバーライセンス)=342万がイニシャルでかかる。ランニングは仮想サーバーライセンスとDCの運用コストのみでよさそうだ。

ただエンタープライズレベルで使うには高い可用性求められるので2セット必要で、ライセンスはスタンバイモードでの運用することを考慮すれば多少は安くなりそうである。

フルカスタマイズにすると1ラックの電気容量では賄えないレベルの電力を消費する可能性が高いので電気容量には要注意である。

仮想化基板がインストールされることを想定しており仮想ディスクトップ向けを想定しているので大規模なクラウドゲーミングプラットフォームとの相性はそこまでよくないだろう。

グラフィックの性能は以下の表を参照されたし。





VCAの仮想化テクノロジー


仮想化上でGPU使うなんてありえないと思っていたがさすがNVIDIA、独自ドライバーでこの問題をクリアしている。

大きく分けて手法は2つあり、パススルー方式かソフトウェアエンコード方式。

パススルー方式はGPUのコアを仮想マシンに直接結びつけることができる。もちろんHypervisorがパススルーに対応する必要がありVmwareとXenが現状対応してそうだ。

パススルーはGPUに直接仕事をぶん投げるのでGPUへのオーバーヘッドは最小限に抑えれそう。
ただこれには若干問題があり、コアを直接割り当てるということは恐らくGPUのコア数が仮想マシンの数の最大数になるはず。
HypervisorはVCPUをサポートしているのでコア数を超えても仮想マシンを作成できるがGPUの制限で作成できないという問題が発生する。

次にソフトウェアエンコード方式でこれはゲストOS上にドライバーをインストールしてGPUをエミュレートしてに命令を流す方式。パススルーと比べてパフォーマンスは低下するがGPUコアを有効活用できそうだ。ただエミュレートしたGPUでは使えない命令セットがあるのでその場合採用は不可能になる。おそらくDirectXなどもろに影響を受けると思うので検証が必要である。

クラスタを組んでGPGPUとして使うのは可能だがコスパはよくなさそうである。

AWSでの運用


可能であれば私はこの選択を取りたいと思った。

  1. サーバーの運用
  2. 高い可用性
  3. 従量課金
この3点どれをとっても最もコスパがよさそうだと感じたからである。

現在のインスタンスタイプでGPUを積んでいるものはcg1.4xlargeしかない。
性能は以下になる。
vCPU:16
メモリ:22.5
ネットワーク:10 ギガビット

Windowsの場合AWSの画面を見る限りクライアントOSには対応してそうにはないのでWindowServerなどを採用する必要ありそうだ。

GPUはTesla M2050を2つ搭載しているようだ。ただWindowsServerなのでVCAで紹介したパススルーなどのテクノロジーを利用することはできない。つまり仮想ディスクトップなどの用途にはまったくもって向いていない。

HPCでの利用を想定しているのでAWSのツールを使えば簡単にClusterを構築できるのは大きな魅力でノードさえ追加していけば計算能力をスケールさせることが容易に可能。
画像処理やGPUを有効活用できるプログラムには大きな効果を発揮するがクラウドゲーミングでの利用はクラスタ構成をアプリ側にも考慮してもらう必要があるのでかなり導入の閾値は高そうだ。

そして大きな問題がある。なんと現時点では日本いリージョンがないので例え作りこんだとしてもレイテンシーの問題をクリアすることが極めて困難だ。

料金に関してはイニシャルコストが発生せずランニングだけでいいのがAWSの魅力。
今のレートだと1HPCインスタンス一日4千円程度だ。

クラウドゲーミングプラットフォームプロバイダ

グラウドゲーミングのプラットフォームを提供しているベンダーが4つ程度あるのを確認できた。
Agawi、Playcast、ubitus、G-clusterだ。

この4つともバックエンドにはNVIDIAのプラットフォームを採用している。

このプラットフォームとゲーム側との接続はブラックボックスだが恐らくゲーム処理と画像処理をストリームで相互通信するのだろう。

既存のゲームシステムをクラウドゲーミング化するのにはもってこいのプラットフォームで既存システムはほぼそのままでクライアント側のシステムをプラットフォーム側で動かすために改良を加えれば事は済みそうである。

クラウドゲーミングはTCP/UDP通信を多様しているはずなので既存のCDNプラットフォームを利用した地理的な分散やトラフィックのコントロールは恐らく現時点では実現できない。
そのためプラットフォームベンダーによっては国限定のサービスになるかもしれない。

第四の選択


恐らくここまで来ると「クラウドゲーミングプラットフォーム作るのんかなり困難かつコスパ悪くね?」と思うはず。
第四の選択はグラボを搭載したサーバー郡を構築することだ。
前述したNVIDIAのアプライアンスサーバーを自作する形式だが、私の知る限りクライアントOSなどに対応したIAサーバーはあまり無い。
SUPERMICROなどASUSなどのベンダーがグラボを搭載したラック型のサーバーを提供している。
H○やD○○○やI○○など慣れ親しんだサーバーではないので若干不安が残るのが正直な感想。


しかし近年CPU内蔵GPUであるAPUがクライアントPCに出てき始めた。
APUはGPUをより汎用化させた通常のプロセッサの役割も担えるようすることでGPGPUでは専用のソフトウェアが必要であったが不要になりそうだ。
APUはAMDの開発が進んでおりそろそろサーバー用のAPUとしてリリースしてもいいんじゃないかと思っている。どうなんでしょうかAMDさん。

このAPUが市場にでればこれまでの問題は大きくクリアされる。
GPUを積まなくても高速かつ美しい描画が可能になり専用のドライバーを使った仮想化との融合も考えなくていい。
大規模な分散処理は各企業ノウハウがあることが多いので、このノウハウをそのまま利用しクラウドゲーミングのプラットフォームを構築可能だ。

APUの市場は大きく拡大すると思う。APUさえあれば高性能なグラフィックカードを積んだPCは必要なくなりラップトップでもグラフィックカード並みの性能を引き出せることになる。
NVIDIAやIntelも競合として現れ価格やシリーズの競合が多く発生するだろう。

クラウドゲーミングのプラットフォームはAPUの登場で大きく前進すると思うので今すぐ構築するのはイバラの道を進みそうである。