web-dev-qa-db-ja.com

X11-転送と効率

X11経由で転送する必要のある、グラフィックを多用するアプリケーションがあります。 X11とその(非)効率を調査するのに少し時間を費やしました。これには次のすばらしい投稿が含まれます X11転送がなぜ非効率なのですか?

X11フォワーディングのパフォーマンスがアプリケーションに依存するかどうかは、私にはまだ明確ではありません。何が起こっていても、画面全体が転送されるという印象を受けました。その場合、X11転送はアプリケーションに依存しません。

では、実際に何が転送されるか、およびssh -Xのパフォーマンスがアプリケーションに依存するかどうかについて、具体的な情報はありますか?

12
Fang

何が起こっていても、画面全体が転送されるという印象を受けました。その場合、X11転送はアプリケーションに依存しません。

いいえ、実際には反対です。 X11転送が「X11転送」と呼ばれる理由は、アプリケーションが「Xサーバー」(通常はXorg)でウィンドウをレンダリングするために使用する実際の Xプロトコル メッセージを転送するためです。これらのメッセージは、ウィンドウの作成/移動、テキストとグラフィカルプリミティブ(線/長方形)の描画、ビットマップの描画などのコマンドです。

概念的には、VNC/RFBなどの「フルスクリーンイメージ」プロトコルの反対であると言えます。これはWindowsのRDPにいくらか似ていると思います。これは、GDI描画コマンドを転送するためにも作成されました。

したがって、プログラム間の違いが見られる理由は次のとおりです。

  1. あなたが参照した投稿を引用すると、もともとほとんどのXベースのプログラムは次のように機能しました。

    基本的に、X11は画面をコンピューターに送信しませんが、ローカルコンピューター上のXサーバーがローカルシステムで画面を再作成できるように、表示命令を送信します。

    したがって、プログラムがボタンを表示したい場合、「長方形を描く」、「テキストを描く」、そしておそらくそれを3Dに見せるためのいくつかの線など、いくつかの短いコマンドを送信しました。

  2. 時間が経つにつれ、これは変化し、プログラムは独自にレンダリングを開始し、それらの命令の多くは、「ここではすでにレンダリングしたビットマップです。これを画面に表示します」–ローカルでは非常に高速ですが、X11がないためネットワーク上で非常に低速です画像圧縮。

    つまり、アンチエイリアスフォントと同じくらい基本的なものであっても、最新のツールキットを使用してビルドされたプログラムは、ネットワークX11よりもはるかに遅くなります。

    (対照的に、RDPは時間とともに適応しており、JPEGやH.​​264などのさまざまな形式の画像圧縮が含まれています。画像全体がロードされている間、圧縮アーチファクトに気付くことがよくあります。)

  3. さいわい、GTKなどのほとんどのUIツールキットは損傷追跡を実装しているため、更新された領域のみが再送信されます。ただし、一部のプログラム(Firefox/Thunderbirdのいくつかのバージョンなど)はこれをサポートせず、実際に更新されていなくても、ウィンドウ全体の完全な再レンダリングを要求します。

    これもプログラムの違いの1つです。問題のないプログラムでもネットワーク上で十分に使用できますが、バグのあるプログラムは100 Mbpsリンクを飽和させて、まったく何の役にも立ちません。

29
user1686