Ich habe eine grafisch intensive Anwendung, die über X11 weitergeleitet werden muss. Ich habe einige Zeit damit verbracht, X11 und seine (In-) Effizienz zu erforschen, einschließlich dieses großartigen Beitrags: Warum ist die X11-Weiterleitung so ineffizient? .
Eine Sache, die mir immer noch nicht klar ist, ist, ob die Leistung der X11-Weiterleitung von der Anwendung abhängt. Ich hatte den Eindruck, dass der gesamte Bildschirm weitergeleitet wird, egal was los ist. Dann sollte die X11-Weiterleitung anwendungsunabhängig sein.
Gibt es konkrete Informationen darüber, was tatsächlich weitergeleitet wird und ob die Leistung von ssh -X von der Anwendung abhängt?
-C
Option in der Befehlszeile oder dieCompression: yes
Option in der Datei .ssh / config. Wenn Sie eine herkömmliche X-Weiterleitung von Dallas nach Australien über eine überlastete T1-Verbindung durchführen, kann dies der Unterschied zwischen der Aufgabe sein, einen fünf Ebenen tiefen Dialog in der Benutzeroberfläche aufzurufen und ein Kontrollkästchen von einer unrealistischen Aufgabe zu einer lediglich überragenden Aufgabe auszuwählen frustrierende zwei Stunden. Ich hatte zum Glück nicht die Notwendigkeit, dies mit Wayland zu versuchen, aber ich gehe davon aus, dass es stark verbessert wurde.Antworten:
Nein, es ist eigentlich das Gegenteil. Der Grund, warum die X11-Weiterleitung als "X11-Weiterleitung" bezeichnet wird, liegt darin, dass sie die tatsächlichen X-Protokollnachrichten transportiert , die von Anwendungen zum Rendern ihrer Fenster auf dem "X-Server" (normalerweise Xorg) verwendet werden. Diese Nachrichten sind Befehle zum Erstellen / Verschieben von Fenstern, Zeichnen von Text und grafischen Grundelementen (Linien / Rechtecken), Zeichnen von Bitmaps usw.
Man könnte sagen, es ist konzeptionell das Gegenteil von "Vollbild" -Protokollen wie VNC / RFB. Ich denke, es ist etwas vergleichbar mit Windows RDP, das auch für den Transport von GDI-Zeichenbefehlen entwickelt wurde.
Die Gründe, warum Sie Unterschiede zwischen Programmen sehen, sind:
Um den Beitrag zu zitieren, auf den Sie verwiesen haben, haben ursprünglich die meisten X-basierten Programme folgendermaßen funktioniert:
Wenn ein Programm eine Schaltfläche anzeigen wollte, sendete es nur ein paar kurze Befehle - "Zeichnen eines Rechtecks", "Zeichnen von Text" und möglicherweise einige Linien, damit es 3D aussieht.
Im Laufe der Zeit änderte sich dies, Programme begannen, das Rendern selbst durchzuführen, und viele dieser Anweisungen wurden nur "hier ist eine Bitmap, die ich bereits gerendert habe, stellen Sie diese auf den Bildschirm" - lokal sehr schnell, aber über das Netzwerk sehr langsam, da X11 keine hat Bildkompression.
Dies bedeutet, dass Programme, die mit modernen Toolkits erstellt wurden, über vernetztes X11 viel langsamer sind, selbst wenn es so grundlegend ist wie Antialiasing-Schriftarten.
(Im Gegensatz dazu hat sich RDP im Laufe der Zeit angepasst und umfasst verschiedene Formen der Bildkomprimierung wie JPEG und sogar H.264. Sie können die Komprimierungsartefakte häufig bemerken, während das vollständige Bild geladen wird.)
Glücklicherweise implementieren die meisten UI-Toolkits wie GTK die Schadensverfolgung, sodass nur aktualisierte Regionen erneut gesendet werden. Einige Programme (z. B. mehrere Firefox / Thunderbird-Versionen) unterstützen dies jedoch nicht und fordern ein vollständiges erneutes Rendern des gesamten Fensters an, auch wenn es nicht wirklich aktualisiert wurde.
Das ist ein weiterer Unterschied zwischen Programmen - gut verhaltene Programme sind im Netzwerk immer noch recht brauchbar, aber fehlerhafte Programme können eine 100-Mbit / s-Verbindung überlasten und absolut nichts Nützliches tun.
quelle