2012-10-19 15 views
7

Ich bin an der Ostküste der Vereinigten Staaten, SSHing in einen Server an der Westküste.SSH-Kompression für X11 Forwarding

Ich habe es geschafft, X11 Forwarding arbeiten zu lassen, damit ich GUI-Anwendungen für bestimmte Aufgaben starten kann, wo es hilfreich ist. Jedoch gibt es für alle von X11 weitergeleiteten Apps (, insbesondereemacs!) So viel Verzögerung zwischen Eingabe (Tastenanschläge, Mausklicks usw.) und Reaktion, dass es manchmal von unglaublich frustrierend zu potenziell schädlich ist - wenn ich es vorhabe A zu tun, aber B passiert, weil die Verzögerung so groß ist.

Ist die SSH-Komprimierung ein potenzieller Täter? Welche Art von Komprimierung sollte ich verwenden?

Antwort

14

X11-Grafiken benötigen viel Bandbreite. Wenn sich Ihr Remote-Host in einiger Entfernung befindet (d. H. Nicht im LAN), werden Sie wahrscheinlich in Ihren exportierten X11-Anwendungen träge sein.

Ich bin mir nicht sicher über SSH-Komprimierung. Die Leistung hängt möglicherweise von anderen Faktoren wie der CPU-Leistung ab. Von der ssh Manpage:

  -C  Requests compression of all data (including stdin, stdout, 
      stderr, and data for forwarded X11 and TCP connections). The 
      compression algorithm is the same used by gzip(1), and the 
      “level” can be controlled by the CompressionLevel option for pro‐ 
      tocol version 1. Compression is desirable on modem lines and 
      other slow connections, but will only slow down things on fast 
      networks. The default value can be set on a host-by-host basis 
      in the configuration files; see the Compression option. 

Hier sind einige andere Abhilfen können Sie verwenden, um schneller Dinge zu machen:

  • Statt mit der GUI interagierender X11-Weiterleitung verwenden, sollten Sie etwas anderes, das besser ist Optimierung/Komprimierung, wie VNC oder NX/FreeNX.
  • Verwenden Sie die Terminalversion von Emacs anstelle der GUI-Version.
+0

Raten Sie mein Problem ist nicht über die Konfiguration-es geht um die Tools, die ich wählte. Ich hatte einige Probleme damit, VNC zu arbeiten, aber vielleicht ist es eine weitere Einstellung wert. Vielen Dank! – Zearin

+3

Eigentlich gut geschrieben X11-Programme brauchen nicht viel Bandbreite. Das Hauptproblem bei X11 ist die abgrundtiefe schlecht geschriebene Xlib, die für fast jede Operation einen vollständigen synchronen Roundtrip durchführt, während viele Operationen asynchron ausgeführt werden können. Wenn Sie ein anderes X11-Protokoll-Backend wie Xcb verwenden und keine dämlichen Dinge wie das Rastern der gesamten GUI auf dem Client und dann nur das verdammte Ding über das Netzwerk tun, ist einfaches X11 über TCP über eine Verbindung mit niedriger Bandbreite und hoher Latenz tatsächlich sehr brauchbar. Allerdings sind viele Programme schlecht geschrieben. Ich empfehle NX oder ssh Xpra – datenwolf

+0

+1 an @datenwolf Es ist mehr über Latenz und Anzahl o Roundtrips als Bandbreite, und Xlib macht sehr schlechte Arbeit bei der Verwendung von Vollduplex async Natur des x11-Protokolls (Protokoll selbst ist sehr für Latenz optimiert) –

1

Wie Sie speziell emacs erwähnt: Es gibt die Befehlszeilenoption

-nw, --no-window-system 
      Tell Emacs not to create a graphical frame. If you use 
      this switch when invoking Emacs from an xterm(1) window, 
      display is done in that window. 

Dies kann schneller sein viel, wenn sie über ssh arbeiten (wie es nur Zeichen zu übertragen hat, nicht neu zeichnen der ganze Bildschirm über X11).