Citrix TechDay 2015ご参加いただきありがとうございました。
私が担当しましたXenDesktop / XenAppグラフィック ディープダイブのフォローアップの続きです。

後半はHDX 3D Proのディープダイブでした。

HDX 3D Proは物理GPUもしくはvGPUを使ってレンダリングを行うこととH.264によるエンコード(圧縮)およびクライアントへの転送を行うことによって、OpenGL、Direct3Dなどを使った3D CADなどのハイエンド グラフィック アプリケーションをWAN環境でも利用できるようにする技術です。今回vGPUの技術よりもエンコードの方式による画質パフォーマンスの違いなどを解説しました。

XenDesktop/XenAppは三つのエンコーダーがある

  1. DeepCompressionエンコーダー
    HDX 3D Proの標準エンコーダーでGPU/vGPUでレンダリングされた画像をH.264で圧縮して転送します。
  2. DeepCompressionV2エンコーダー
    通常のXenDesktop/XenAppのSuperCodecで利用され、このセッションの前半で 紹介したようにテキストを判別しロスレスで転送しますが、DeepCompression(V2なし)エンコーダーはテキストロスレス転送は行いません
  3. Compatibilityエンコーダー
    HDX 3D ProではこのエンコーダーでTrue lossless転送を行います。

画質の調整とロスレス表示について

DeepCompressionエンコーダーの画質調整

  1. H.264の画質(CRF)
    HDX 3D Proで設定されている上限値と下限値があり、ネットワーク環境に応じて画質は自動で動的に調整されます。
  2. フレームレート(FPS)
    同じくフレームレートも上限値と下限値がありネットワーク環境に応じて動的に変更されます。フレームレートの上限はCitrixポリシーで最大60fpsまで調整可能です。

ロスレス

転送データは増えますが、画質劣化を抑えたロスレス(視覚的無損失)転送も可能です。

  1. True lossless
    Compatibilityエンコーダーを使って2DRLEによる可逆圧縮により画像劣化をなくします。
  2. Visually lossless(視覚的無損失)
    H.264ではRGBデータから輝度(Y)と色差(UV)を用いたデータに変更することでまずはデータ量を減らします。この時にDeepCompressionエンコーダーは色差UVについて水平垂直方向の解像度をそれぞれ半分に落とします。(YUV4:2:0)。Visually losslessはこの色差UVについて水平垂直方向の解像度を落とさない(YUV4:4:4)ことで画質劣化をおさえ、視覚的にはほとんど欠損がないように見せることができます。

実際のチューニングとトラブルシューティング

  1. まずはデフォルトH.264YUV4:2:0で操作性重視で行うことをお薦めします。その後画質の調整を検討してください。ハイエンドグラフィックアプリケーションにおいてはやはり画面が動かないのが一番の問題と考えます。
  2. ユーザーエクスペリエンスやパフォーマンスを定義することも重要です。例えば、 表示品質、かくつき、追従性、ちらつき、データ転送量の指標があり、これらは設定パラメーターにより変わってきます。利用可能なリソースと得られるエクスペリエンスで最適化を図ってください
  3. 転送モードの確認はwmic コマンドかHDX Monitorで確認できます。Windowsのパフォーマンスカウンタ使う、XenCenterのパフォーマンスタブ、xentop、nvidia-smi、rrd2csv、wmicコマンド、Directorなどを利用してトラブルシューティングも可能です。
  4. 海外からのアクセスなど高遅延ネットワークでは帯域が使いきれないことがあるのでTCPバッファの調整CloudBridgeなどのWAN高速化装置を利用することもご検討ください。