X11-転送と効率


12

X11を介して転送する必要があるグラフィカルに集約的なアプリケーションがあります。私はX11とその(非)効率を調査するのにいくらかの時間を費やしました。これには次の素晴らしい記事が含まれます。

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

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


2
「では、実際に転送される内容と、ssh -Xのパフォーマンスがアプリケーションに依存するかどうかについての具体的な情報はありますか?」はい。スタートとして、ダニエル・ストーンの話見ウェイランドとXの背後にある本当の物語 LinuxConf.au 2013年から
sampablokuper

1
「画面全体が転送されるという印象を受けました」SSH X転送で通常行うことはリモートシェルで個々のアプリケーションを手動で実行することであるため、その印象を与えるものを理解するのは困難です。アプリケーションの起動方法について詳しく説明していただけますか?
rakslice

1
SSHトンネルを介してXセッションを転送する場合の注意点の1つは、sshが圧縮を実行できることです。これ-Cは、コマンドラインのCompression: yesオプションまたは.ssh / configファイルのオプションです。混雑したT1リンクを介してダラスからオーストラリアへの従来のX転送を行っている場合、これは、インターフェイスの5レベルの深さのダイアログを表示するタスクと、非現実的なタスクから非常に単純なチェックボックスを選択することとの違いになりますイライラする2時間。幸い、これをWaylandで試す必要はありませんでしたが、大幅に改善されたと思います。
エド・グリム

特に私の質問は@grawityによって非常によく回答されているため、コメントで大規模な議論を始めたくありません。「画面全体」とは、sshトンネルを介して転送されるデータが常に画面上のピクセルの簡単な説明であることを意味します。@ EdGrimm:圧縮についてのコメントありがとうございます。私はそれを知っています。私たちの特定のシナリオでは、X11は10Gbit LANリンクを介して転送され、圧縮/非圧縮はまったく違いがないようです。

回答:


29

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

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

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

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

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

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

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

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

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

    (対照的に、RDPは時間の経過とともに適応しており、JPEGやH.​​264などのさまざまな形式の画像圧縮が含まれています。多くの場合、完全な画像の読み込み中に圧縮アーチファクトに気付くことができます。)

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

    それはプログラム間のもう1つの違いです。正常に動作するプログラムはネットワーク上で非常に使いやすくなっていますが、バグのあるプログラムは100 Mbpsリンクを飽和させてまったく何もしません。


1
MythTVサーバーをセットアップしようとしたことがあります。「セットアップ」ユーティリティはQtアプリケーションであり、合理的なADSLリンクがボトルネック(約8 Mb / s)であるにもかかわらず、構成の各ページを表示するのに数分かかりました。このため、数分の作業には数時間かかりました。CursesUI、または行儀の良いX11アプリケーションさえあれば、非常に簡単になります。どれだけの問題が発生するかわかっていたら、オンサイトになってディスクレスフロントエンドボックスの1つを表示に使用するまで1、2週間待っていました。ただし、それよりも早くサーバーを稼働させたいと思っていました。
トビー・スペイト

1
これらの「バグのあるプログラム」を防御するために、これはX + toolkitイデオロギーの欠陥であり、基本的にこれらのバグのあるプログラムがバグである必要があると指摘する必要があります。プログラムは、API(コマンドを送信する)を呼び出して、「通常のウィンドウ」、メニューとボタン、スクロールバーを呼び出すことができると思いますが、ありません。あなた、またはツールキットは、すべて手作業で行う必要があります。私は実際にはMSの大ファンではなく、Appleのファンでもありませんが、Xエコシステムは何十年もの間、ひどくひどい状態でしたが、彼らはそれらのことを正しくしています。
デイモン

ただし、違いがあるかどうかはわかりません。WindowsのUWPやWinForms、またはcomctl32がGTKやQTよりも「ツールキット」ではないのはなぜですか?彼らはすべてを「手作業」でもしませんか?
user1686
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.