Mam graficznie intensywną aplikację, którą należy przesłać przez X11. Spędziłem trochę czasu badając X11 i jego (nie) efektywność, w tym ten świetny post: Dlaczego przekazywanie X11 jest tak nieefektywne? .
Jedną z rzeczy, która wciąż nie jest dla mnie krystalicznie jasna, jest to, czy wydajność przekazywania X11 zależy od aplikacji. Miałem wrażenie, że cały ekran jest przesyłany dalej, bez względu na to, co się dzieje. Następnie przekazywanie X11 powinno być niezależne od aplikacji.
Czy są więc jakieś konkretne informacje na temat tego, co faktycznie jest przekazywane i czy wydajność ssh -X zależy od aplikacji?
-C
opcja w wierszu poleceń lubCompression: yes
opcja w pliku .ssh / config. Jeśli wykonujesz tradycyjne przekazywanie X z Dallas do Australii za pośrednictwem przeciążonego łącza T1, może to być różnica między tym, że Twoim zadaniem jest otwarcie okna dialogowego na pięciu poziomach głęboko w interfejsie, a wybraniem pola wyboru z nierealistycznego zadania do niewiarygodnie frustrujące dwie godziny. Na szczęście nie musiałem próbować tego z Waylandem, ale zakładam, że został znacznie ulepszony.Odpowiedzi:
Nie, w rzeczywistości jest odwrotnie. Przekazywanie X11 nazywa się „przekazywaniem X11”, ponieważ przenosi rzeczywiste komunikaty protokołu X używane przez aplikacje do renderowania okien na „serwerze X” (zazwyczaj Xorg). Te komunikaty to polecenia do tworzenia / przenoszenia okien, rysowania tekstu i prostych elementów graficznych (linii / prostokątów), rysowania map bitowych itp.
Można powiedzieć, że koncepcyjnie jest to przeciwieństwo protokołów „pełnego ekranu”, takich jak VNC / RFB. Myślę, że jest to w pewnym stopniu porównywalne z RDP systemu Windows, który został również stworzony do transportu poleceń rysowania GDI.
Dlatego widzisz różnice między programami:
Aby zacytować post, do którego się odwoływałeś, początkowo większość programów opartych na X działała w następujący sposób:
Kiedy więc program chciał pokazać przycisk, wysłał tylko kilka krótkich poleceń - „narysuj prostokąt”, „narysuj tekst” i być może kilka linii, aby wyglądał 3D.
Z czasem to się zmieniło, programy zaczęły same renderować, a wiele z tych instrukcji stało się po prostu „oto mapa bitowa, którą już wyrenderowałem, umieść to na ekranie” - bardzo szybko lokalnie, ale bardzo wolno w sieci z powodu braku X11 kompresja obrazu.
Oznacza to, że programy zbudowane przy użyciu nowoczesnych zestawów narzędzi działają znacznie wolniej w sieci X11, nawet jeśli jest to coś tak podstawowego jak czcionki antyializowane.
(Natomiast protokół RDP dostosowuje się z czasem i obejmuje różne formy kompresji obrazu, takie jak JPEG, a nawet H.264; często można zauważyć artefakty kompresji podczas ładowania pełnego obrazu).
Na szczęście większość zestawów narzędzi interfejsu użytkownika, takich jak GTK, implementuje śledzenie szkód, więc tylko zaktualizowane regiony są wysyłane ponownie. Jednak niektóre programy (takie jak kilka wersji Firefox / Thunderbird) nie obsługują tego i żądają pełnego ponownego renderowania całego okna, nawet jeśli tak naprawdę nie zostało zaktualizowane.
To kolejna różnica między programami - dobrze zachowujące się programy są nadal całkiem użyteczne w sieci, ale błędne mogą nasycić łącze 100 Mb / s, nie robiąc absolutnie nic pożytecznego.
źródło