Dlaczego klienci RDP w systemie Linux są znacznie wolniejsi niż w systemie Windows?

10

Mam zdalny komputer z systemem Windows 8.1, z którym łączę się przy użyciu protokołu RDP z klientów Windows 7 i Linux. Zauważyłem, że wydajność np. Podczas przewijania jest znacznie lepsza w systemie Windows niż w jakiejkolwiek dystrybucji Linuksa. Używam rdesktop, Remmina, GNOME-RDP, wszędzie tam, gdzie odświeżanie ekranu jest powolne i niespokojne, jak VNC. Ale RDP nie działa jak VNC , czy tak? Dlaczego tak jest i jaki jest najszybszy klient RDP dla systemu Linux? Może klient połączenia pulpitu zdalnego w Wine?

niutech
źródło
2
RDP jest zastrzeżonym protokołem, więc myślę, że inni odwrócili inżynierię swoich programów, dlatego nie znając podstawowych mechanizmów, będą musieli zgadnąć, co zrobić
gwillie
mój klient Android rdp (firmy Microsoft) działa lepiej na moim telefonie niż jakikolwiek system Linux na moim laptopie i7
Kenneth Wilke

Odpowiedzi:

13
  1. Istnieje wiele wersji protokołu RDP:

    • oryginał 4.0, który jest klonem protokołu ITU-T T.128
    • 5.0 - który jest nadal używany przez rdesktop (i nawet nie w pełni)
    • 5.1, 5.2, 6.0, 6.1, 7.0, 8.1 i 8.1

Jak możesz sobie wyobrazić, każda nowa wersja RDP jest lepsza, nie tylko poprzez wprowadzenie nowych funkcji, ale także poprzez dalszą poprawę wydajności i ogólnego doświadczenia użytkownika.

  1. Jak napisałem powyżej, rdesktop nadal implementuje tylko podzbiór protokołu RDP 5.0 (wersja używana w systemie Windows 2000). Ta wersja jest mniej zoptymalizowana niż co najmniej 6.0 (wydana z Windows Vista), co było ogromną poprawą wydajności.

  2. Ponadto cały system okien X11 używany w systemie Linux to grupa aplikacji użytkownika, podczas gdy system Microsoft Windows przetwarza zdarzenia graficzne (takie jak przewijanie ekranu) bezpośrednio w jądrze.

Przewijanie ekranu (i okien aplikacji) to operacja wymagająca skopiowania dużej ilości pamięci z jednego miejsca do drugiego. Ta operacja jest znacznie szybsza w jądrze systemu niż w aplikacjach użytkownika.

Ma to również wpływ na wydajność każdej implementacji PROW.

Tomasz Klim
źródło
Dzięki, ale co powiesz na FreeRDP? Którą wersję RDP obsługuje?
niutech
1
Znalazłem kilka różnych informacji o FreeRDP, ale prawdopodobnie obsługuje on podzbiór 7.0 lub 7.1. Jeśli masz czas, tutaj masz więcej informacji na ten temat: github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation
Tomasz Klim
Czy ostatnio nastąpił jakiś postęp?
Royi,
Dlaczego przewijanie ekranu powinno być powolne lub wymagać dużo kopiowania pamięci zamiast prostych operacji GPU Blt, aby przenieść zawartość, a następnie narysować nowo widoczną zawartość?
Whitneyland
0

Jak widać z odpowiedzi gwilli, RDP nie jest RDP, ponieważ istnieje wiele różnych wersji protokołu z wieloma rozszerzeniami, a klient i serwer negocjują wersję protokołu, którą rozumieją.

Z natury rzeczy dwie wersje systemu Windows prawdopodobnie zgadzają się na nowszą i lepiej działającą wersję protokołu.

Nie mogę powiedzieć nic kwalifikującego odnośnie wydajności klienta Linux RDP, ponieważ nie znam żadnych testów porównawczych dotyczących implementacji RDP typu open source. Jeśli chcesz porównać klientów, powinieneś sprawdzić, z jakich bibliotek podstawowych korzystają klienci, a nie tylko klient. Dzięki temu wyszukiwanie będzie bardziej wydajne.

Jodka Lemon
źródło