x11vnc ist langsam, verwendet jedoch nur 10% der verfügbaren Bandbreite

10

Ich verwende x11vnc über ein 15 Mbit / s-Netzwerk mit einer Latenz von 20 ms. Wenn sich der Bildschirm stark ändert, ist x11vnc langsam. Wenn ich beispielsweise einen Tab in einem Browser wechsle, dauert es fast zwei Sekunden, bis die Ansicht vollständig neu gezeichnet ist.

Das Seltsame ist, dass die maximale Verbindungsgeschwindigkeit von x11vnc selbst beim langsamen Neuzeichnen nur etwa 10% der verfügbaren Bandbreite beträgt. Warum nutzt x11vnc nicht die verfügbare Bandbreite, um das Neuzeichnen zu beschleunigen? Zum Beispiel nutzt scp 100% der verfügbaren Bandbreite ohne Probleme.

Wie kann ich den Engpass für x11vnc auf meinem System ermitteln? Bisher denke ich:

  1. 10% Netzwerknutzung => Netzwerk ist kein Engpass
  2. fb-Leserate: 601 MB / s => fb lesen ist kein Engpass

Irgendwelche Ideen, wie ich x11vnc weiter profilieren und herausfinden kann, was eine Verlangsamung verursacht?

Gibt es beispielsweise einen Schalter für x11vnc, der anzeigt, wie viele Daten verarbeitet werden und wie lange es dauert, einen Bildschirm zu erfassen, zu verarbeiten, zu komprimieren und über das Netzwerk zu senden?

mmm
quelle

Antworten:

10

Um meine eigene Frage zu beantworten:

Der Wechsel von der engen Codierung zur Hextilcodierung löste das Problem mit dem langsamen Neuzeichnen vollständig.

Um einige Details hinzuzufügen: Ich habe festgestellt, dass beim langsamen Neuzeichnen des Bildschirms die CPU auf dem Client auf 100% ausgelastet war. Ich habe eine enge Codierung verwendet und auf der Seite VNC Tight Encoder - Vergleichsergebnisse ist zu sehen, dass eine enge Codierung im Vergleich zur Hextilcodierung ziemlich CPU-intensiv ist. Nach dem Umstieg auf Hextile beträgt die maximale CPU-Auslastung nie 100%, fast die gesamte verfügbare Bandbreite wird genutzt und das Neuzeichnen dauert immer weniger als eine Sekunde. Die CPU des Clients war also der Engpass.


Eine noch bessere Alternative (weniger Bandbreite, geringe CPU-Auslastung und scheint sogar schneller als Hextile zu sein) besteht darin , x11vnc mit TurboVNC-Unterstützung zu kompilieren und dann den TurboVNC-Client zu verwenden .

mmm
quelle
Hier sind einige Vergleiche von Bandbreite und Komprimierungszeit. Tightvnc.com/archive/compare.html
huyz
1
Wie genau haben Sie die Kodierung geändert?
ScottF
1

Der Grund ist, dass der Screenshot / Renderer ineffizient ist. Viele verschiedene VNC-Implementierungen spielen damit herum, um eine bessere Leistung zu erzielen.

Wenn Sie nicht genau angeben müssen, was sich auf der lokalen Konsole befindet, ist NoMachines NX oder FreeNX als Remotedesktopumgebung eine bessere Lösung . Die Leistung ist Tag und Nacht im Vergleich zu VNC auch über WAN-Verbindungen.

jfalcon alias Don Fanning
quelle
1

Ich hoffe das sollte funktionieren. http://www.karlrunge.com/x11vnc/faq.html#faq ... Suche nach VNC-Viewer-Parametern und x11vnc-Parametern:

Es hat bei mir funktioniert.

Kishor Pawar
quelle
1
Willkommen bei Server Fault! Wir bevorzugen es wirklich, dass Antworten Inhalte haben, keine Zeiger auf Inhalte. Dies kann theoretisch die Frage beantworten, es wäre jedoch vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Chris S