Przyspieszenie zdalnych sesji X.

16

Mam zdalną maszynę z systemem Ubuntu 11.10 Server, z którą łączę się przez SSH z OS X 10.7.3:

Host zdalny.przyklad.com
 Przekaż X11 tak
 ForwardX11 Zaufane tak

Czasami chcę tam uruchomić aplikację GUI (przede wszystkim gitk). Ale interfejs użytkownika jest raczej powolny. Zarówno maszyna zdalna, jak i mój komputer Mac mają dobre połączenie z Internetem. Ping między nimi wynosi około 55 ms i nie ma utraty pakietów. Czy mogę coś przyspieszyć?

Konfigurowanie innego rozwiązania pulpitu zdalnego jest opcją, ale chciałbym tego uniknąć, ponieważ nie potrzebuję tej aplikacji zbyt często.

Alexander Gladysh
źródło
próbowałeś włączyć kompresję podczas wywoływania aplikacji?
Journeyman Geek
1
Dzięki. Jak widać z mojego .ssh/configcytatu, nie, nie zrobiłem tego. Dodałem Compression yesi CompressionLevel 9do konfiguracji hosta. Wydaje się teraz trochę szybszy, ale wciąż nie wystarcza do wygodnego użytkowania. Coś jeszcze mogę zrobić?
Alexander Gladysh
@AlexanderGladysh Jaki jest Twój upstream prędkości?
EKW
scpmówi 1,2 MB / s podczas przesyłania lub pobierania na ten zdalny komputer, co mniej więcej jest liczbą reklamowaną przez mojego dostawcę usług internetowych.
Alexander Gladysh
1
Jeśli to możliwe, użycie sshfs lub innego sieciowego systemu plików i lokalne uruchomienie aplikacji może być szybsze (chyba że repozytorium git jest naprawdę ogromne).
Eroen

Odpowiedzi:

15

W artykule Najlepsze opcje SSH dla przekazywania X11 zaleca się użycie zamiast domyślnego szyfru AES, szyfrów arcfour i blowfish, które działają znacznie lepiej.

Dlatego należy użyć:

ssh -c arcfour,blowfish-cbc -XC host.com

Uwagi techniczne Seba (jeśli strona jest niedostępna, istnieje zarchiwizowana wersja ) zalecają raczej:

ssh -Y -C -o CompressionLevel=9 -c arcfour,blowfish-cbc user@hostname

Może to pomóc nieco poprawić przyrosty prędkości, które już zaobserwowałeś podczas kompresji.

harrymc
źródło
1
AES, arcfour i blowflish nie są kompresją; są kryptografią. Zauważ, że odchodząc od AES, obniżasz bezpieczeństwo połączenia; więc w niektórych przypadkach może to nie być możliwe. -COpcja jest kluczem tutaj, chociaż, bo to jest kompresja. Uważaj przy ustawianiu poziomu kompresji, pamiętaj o jej pomiarze, ponieważ może to mieć ogromny wpływ na procesor ...
Tamara Wijsman,
Ponadto niektóre procesory mają przyspieszenie sprzętowe do szyfrowania AES.
rob
6

Wspomniałeś, że nie chcesz konfigurować innego rozwiązania pulpitu zdalnego, ale zależy Ci na wydajności. X11 nie jest bardzo wydajnym protokołem, więc będziesz mógł spodziewać się drobnych ulepszeń, chyba że użyjesz bardziej nowoczesnego protokołu.

NX (NoMachine) jest prawdopodobnie najlepszym wyborem. Nadal używa ssh, więc nie powinno to być zbyt wielkim wysiłkiem w porównaniu z innymi protokołami na pulpicie, które mogą wymagać zmian w ustawieniach zapory ogniowej itp. Istnieją pakiety NX dla Fedory, więc przypuszczam, że są one również dostępne dla Ubuntu.

Jeśli zależy ci na wydajności, aby poświęcić czas na zadanie pytania, mam nadzieję, że poświęcisz kilka minut na naukę NX.

EDYCJA: Aby wyjaśnić, dlaczego X11 przez ssh nigdy nie będzie szybki: protokół X zajmuje się rysowaniem niskiego poziomu, takim jak linie i okręgi, oraz zdarzeniami niskiego poziomu, takimi jak „mysz przesunęła się o 3 piksele w lewo”. Nowoczesne zestawy narzędzi GUI, takie jak GTK i Qt, nie rysują linii, rysują obrazy. Gdy X11 przechodzi przez SSH, musi stale wysyłać dane obrazu i zdarzenia myszy niskiego poziomu. Protokół wysokiego poziomu, taki jak NX, VNC lub Pulpit zdalny, może zmniejszyć przepustowość i opóźnienie, wiedząc o tym, jak działają zestawy narzędzi. Na przykład, mogą uniknąć konieczności wysyłania zdarzeń myszy, mogą uniknąć tysięcy przerysowań po przesunięciu okien i mogą buforować obszary ekranu, takie jak menu. Jeśli wydajność jest nawet niewielkim problemem, surowy X11 jest zawsze złym wyborem. Na szczęście istnieje wiele szybkich alternatyw, które są łatwe w konfiguracji i obsłudze.

amcnabb
źródło
Nie to, że nie chcę używać pulpitu zdalnego, ale najpierw spróbuję zoptymalizować połączenie X11 :-) Dziękuję, spojrzę na NX.
Alexander Gladysh