Dlaczego VNC w systemie Windows jest tak wolny?

28

W teście mogłem przesyłać strumieniowo film Full HD w naszej sieci z komputera mojego przyjaciela, bez problemu. Jest tak szybki, jak bym chciał.

Ale VNC jest boleśnie powolny. Próbowaliśmy Real VNC i Tight VNC, bawiłem się Capture Methodustawieniami, ale nic nie wydaje się mieć znaczenia; jest po prostu taki wolny.

Czy ktoś ma jakieś wskazówki na temat korzystania z VNC, jak poprawić prędkość, a może jakieś alternatywy?

Czy jest to charakter niedostrzegania wystarczająco szybko unieważnionych części ekranu, czy może coś spowalnia go w sieci?

Oboje używamy systemu Windows 7.

Musimy być w stanie wyświetlać i kontrolować swoje komputery bez blokowania hosta, aby RDP nie działał (chyba że ktoś wie inaczej).

Josh Comley
źródło

Odpowiedzi:

27

VNC jest po prostu nieefektywny. VNC działa właściwie, wykonując serię zrzutów ekranu, kompresując je i przewieszając przez sieć

W systemie Windows protokół RDP zapewnia lepszą wydajność, ale moim zdaniem potrzebujesz profesjonalnej lub lepszej strony serwera / źródła, aby uzyskać prawidłowy protokół RDP.

dziwnie zdalna pomoc może działać lepiej dla twoich potrzeb - to RDP, gdy zarówno użytkownik w terminalu, jak i użytkownik w zdalnym systemie widzą ten sam ekran

EDYCJA: 4 lata później używam nomachine do podobnych zadań - działałby w różnych systemach operacyjnych i robi kilka innych przydatnych rzeczy.

Journeyman Geek
źródło
2
Tak, nie działa na wersjach innych niż Pro, choć podejrzewam , że istnieje obejście tego problemu . (I +1 oczywiście, VNC jest do bani)
slhck
Ach, powinienem był ustalić, co właśnie zrobiłem w swoim wydaniu !
Josh Comley,
równoczesne sesje, można to zrobić za pomocą [ hakerów ] ( missingremote.com/guide/… rzeczy w stylu VNC ... może zdalna pomoc? Edytowałem moją odpowiedź, aby uwzględnić zdalną pomoc.
Journeyman Geek
josh Twoja edycja ma sens, ale zwróć uwagę na ostatni wiersz postu @journeyman, w którym mówi, że „zdalna pomoc” może działać lepiej. Czy spojrzałeś na Pomoc zdalną? Używam go od czasu do czasu i działa świetnie.
Jay R. Wren
Edytowane, aby odzwierciedlić, że zdalna pomoc naprawdę jest tym, czego potrzebujesz;)
Journeyman Geek
15

VNC nie jest porównywalny z przesyłaniem strumieniowym wideo. Podczas przesyłania strumieniowego wideo zazwyczaj przesyłany jest wstępnie skompresowany strumień wideo przez sieć. W przypadku strumieni HD jest często kodowany w formacie H.264. Jeśli używasz VNC, komputer hosta musi wykonać migawki ekranu i skompresować je przed wysłaniem ich do sieci. Jest tu kilka ograniczeń:

  • Silna kompresja wymaga dużej mocy procesora. Na przykład kodowanie 90-minutowego filmu w formacie H.264 w wysokiej jakości często zajmuje ponad 4 godziny czasu kompresji na moim serwerze Athlon X2 4450e. Zazwyczaj taka silna kompresja jest nieodpowiednia dla aplikacji w czasie rzeczywistym, takich jak zdalne sterowanie.
  • Mniej mocna kompresja z kolei będzie wymagać większej przepustowości sieci, co może stać się problemem w połączeniach o niskiej przepustowości, takich jak Internet.

Cóż, istnieje kilka „sztuczek”, które są stosowane przez kodeki wideo oraz narzędzia do zdalnego sterowania i współdzielenia ekranu. Przede wszystkim próbują wykryć zmiany na ekranie i przenieść tylko (skompresowany) obraz zmian. Zwykle oszczędza to DUŻO przepustowości i mocy obliczeniowej. Jednak w przypadku przesyłania pełnoekranowego wideo niewiele to pomaga, ponieważ cały ekran musi być zbyt często przesyłany ponownie. Jak napisano powyżej, obecne urządzenia prawdopodobnie nie będą w stanie ponownie zakodować w czasie zawartości ekranu w jakości Full-HD i przesyłać strumieniowo do aplikacji do zdalnego sterowania, ponieważ host będzie musiał dekodować zawartość wideo, a następnie ponownie zakodować nieprzetworzone obrazy przed wysłaniem je do sieci. Niektóre starsze urządzenia dwurdzeniowe są nawet na granicy możliwości dekodowania treści wideo Full-HD.

Aby poprawić szybkość zdalnego sterowania VNC, możesz wykonać następujące czynności:

  • Większość serwerów / klientów VNC obsługuje wiele algorytmów kompresji. Niektóre z nich są zoptymalizowane pod kątem małej przepustowości, niektóre w celu uzyskania dobrej jakości obrazu, a inne w celu uzyskania niskich opóźnień. Dotyczy to innego aspektu zdalnego sterowania. Ponieważ usługa jest interaktywna, ma znaczenie opóźnienie interaktywne (nie chcesz widzieć reakcji na kliknięcie myszą tuż po 5 minutach kodowania).
  • Spróbuj zmniejszyć liczbę zmian ekranu na komputerze-hoście. Na przykład spróbuj wyłączyć efekty pulpitu systemu Windows, animacje itp. Oszczędza to pasmo przenoszenia, ponieważ tylko zmienione części ekranu są przesyłane przez sieć.
  • Spróbuj wyłączyć dalsze efekty wizualne na hoście, takie jak przezroczystość. Przezroczysty system Windows stosowany w systemie Vista / Win7 zmniejsza „ściśliwość” obrazów. Jednokolorowe / „płaskie” obszary są znacznie bardziej wydajne w kompresji niż żywe kolory i fantazyjne detale. Tak więc wyłączenie przezroczystości Aero i efektów pulpitu naprawdę przyspiesza obsługę pilota. Większość narzędzi do zdalnego sterowania pozwala nawet automatycznie wyłączyć takie efekty podczas łączenia (np. Microsoft RDP i niektóre implementacje VNC).
  • To samo dotyczy zdjęć w tle. Spróbuj użyć ustawienia tła w jednolitym kolorze zamiast obrazów HD.

Innym problemem dla VNC jest to, że musi wykrywać zmiany na ekranie. Niektóre implementacje VNC wykonują „głupie” zrzuty ekranu i porównują je z poprzednim zrzutem ekranu w celu wykrycia zmian. To już wymaga dużej mocy. Niektóre bardziej zaawansowane implementacje działają ze specjalnymi sterownikami wyświetlania (sprawdź UltraVNC), które są tutaj bardziej wydajne, ale wymagają zainstalowania specjalnych sterowników.

Oczywiście wszystko to nie pomaga, jeśli odtwarzasz wideo na swoim komputerze. W takim przypadku VNC będzie musiał ponownie zakodować ~ 30 pełnoekranowych obrazów na sekundę i wysłać je przez sieć. W przypadku większości kompresji, które mogą być wykonywane w czasie rzeczywistym przez dzisiejsze procesory, strumień taki zająłby przepustowość> 8 Mb / s. Dlatego nie nadaje się do większości połączeń internetowych (szczególnie pomyśl o asymetrycznych połączeniach DSL z prędkością przesyłania zwykle mniejszą niż 1 Mb / s, i tak, to szybkość przesyłania ma znaczenie po stronie hosta).

Może być odpowiedni do użycia w sieci LAN, ale tutaj powinieneś prawdopodobnie więcej pomyśleć o skonfigurowaniu serwera multimediów lub udostępnić swoje media za pomocą serwera multimediów DLNA / UPnP (nawet odtwarzacz multimediów Win7 może to zrobić). Następnie użyj klienta DLNA, aby odtworzyć udostępnione multimedia.

SkyBeam
źródło
1
+1, fajne wyjaśnienie. Wybrałbym również wersję DLNA / Media Server.
slhck
Dobra próba, ale całkowicie błędna, ani obciążenie procesora, ani użycie sieci i tak nie jest wysokie. Nawet przy prostym przesyłaniu różnicowym może osiągnąć 20 klatek na sekundę w sieci 1 gib.
Lothar,
4

Absolutnie najszybszy wariant VNC, jakiego kiedykolwiek użyłem, to UltraVNC z zainstalowanym sterownikiem Video Mirror Driver . RDP jest wciąż zauważalnie szybszy, ale nie jest tak zły.

Słyszałem też bardzo dobre rzeczy o ZeroRemote , ale nigdy tego nie testowałem. Wygląda na to, że TrueRemote jest jego następcą.

afrazier
źródło
Nieobsługiwany w systemie GNU / Linux.
Hi-Angel,
1

Jeśli próbujesz oglądać wideo w sieci LAN, najszybszym rozwiązaniem pod względem samej szybkości rysowania ekranu jest prawdopodobnie Radmin .

Shinrai
źródło
3
Wypróbowałem Radmin i tak, jest komercyjny, ale jest cholernie tego wart! Bardzo szybki. Fantastyczny.
Josh Comley,
1

Jak mówi @Journeyman Geek, VNC jest nieefektywny. Jest to zaprojektowane tak, aby VNC nie musiał „rozumieć” tego, co próbuje wyświetlić klient zdalny.

RDP tak naprawdę działa, dzięki czemu może szybciej tworzyć skróty i renderować obrazy. RDP informuje drugi koniec, na przykład „klient otworzył okno w tej lokalizacji” zamiast wysyłać dane bitmapowe reprezentujące zmianę ekranu.

Istnieją hacki „serwera terminali”, które dodadzą możliwości RDP do wersji systemu Windows, które ich nie obsługują, ale oficjalnie ich nie polecam i używasz ich na własne ryzyko. Myślę jednak, że nawet „Startowe” wersje systemu Windows 7 są dostarczane z „Pomocą zdalną” (msra.exe), której możesz spróbować użyć.

Jednak, co możesz zrobić, aby poprawić wydajność VNC, to obniżenie głębokości wyświetlania do 8 bitów, obniżenie rozdzielczości ekranu klienta i użycie buforowania bitmapy po stronie klienta. Oznacza to, że VNC musi przesyłać mniej danych w sieci, a Ty uzyskasz lepszą wydajność (ale nie będzie ładnie wyglądać).

LawrenceC
źródło
0

Jeśli szukasz wydajności, nie musisz używać VNC, spróbuj czegoś takiego jak LogMeIn . Jest bezpłatny i działa dobrze.

Jeff F.
źródło
Właśnie wypróbowałem LogMeIn, wcale mi się nie podobało!
Josh Comley,
3
Uwielbiam LogMeIn do zdalnego sterowania, ale do wideo? Nie ma szansy. VNC to co najmniej P2P. Przechodzi bezpośrednio między źródłem a miejscem docelowym. LogMeIn wprowadza połączenie za pośrednictwem swojego serwera, co oznacza, że ​​masz znacznie większe opóźnienia. Wszystkie problemy z VNC plus kilka innych. Jest potężny w tym, do czego jest przeznaczony, ale nie jest przeznaczony do pełnoekranowego wideo w czasie rzeczywistym.
music2myear
Nie próbuję robić wideo, użyłem tylko wideo jako testu, aby upewnić się, że połączenie między dwoma komputerami nie było wolne
Josh Comley
0

Możesz także wypróbować TeamViewer, jest darmowy do użytku niekomercyjnego i był dla mnie dość szybki. Jednak nie testowałem tego na wideo HD.

wizzard0
źródło
0

Dla mnie nawet przez Internet (z częstotliwościami ping> 50ms i przyzwoitym pasmem> 1mbit / s) bardzo dobrze zachowuję się na UltraVNC. Magia polega na zmianie ustawień połączenia.

Po uruchomieniu przeglądarki przejdź do „Opcje połączenia”, wyłącz „Automatycznie wybierz najlepsze ustawienia”, włącz „Ciasne” i obniż „Jpeg”, aby obniżyć jakość, jeśli to konieczne (2-4 działa dobrze).

To jedyny sposób, w jaki znam gting Full Colours z przyzwoitą wydajnością. Dostaniesz kilka klatek na sekundę, co wystarczy, aby uzyskać szybki pokaz slajdów na pełnym ekranie (wystarcza na wszystko, co robię, w tym na zdalne tworzenie, do oglądania filmu zbyt wolno, a także nie ma dźwięku).

Ponadto w „Właściwościach” serwera pomaga mieć (jeśli nie używa się sterownika kopii lustrzanej, co znacznie poprawia wydajność), aby mieć „Sonduj pełny ekran”, „Okno pierwszego planu ankiety”, „Okno ankiety pod kursorem”, „System HookDll”, „ Niska dokładność ”włączona. Zasadniczo prawie wszystko po lewej stronie.

Andreas Reiff
źródło