Perché VNC su Windows è così lento?


28

In un test, ho potuto trasmettere in streaming un film Full HD attraverso la nostra rete dal computer del mio amico, nessun problema. È più veloce che potrei desiderare.

Ma VNC è dolorosamente lento. Abbiamo provato Real VNC e Tight VNC, ho giocato con le Capture Methodimpostazioni, ma nulla sembra fare la differenza; è così lento.

Qualcuno ha qualche consiglio sull'uso di VNC, su come migliorare la velocità o forse sulle alternative?

È la natura di non riuscire a notare porzioni invalidate dello schermo abbastanza velocemente, o c'è forse qualcosa di rete che lo rallenta forse?

Usiamo entrambi Windows 7.

Dobbiamo essere in grado di visualizzare e controllare reciprocamente i PC senza bloccare l'host, quindi RDP non funzionerà (a meno che qualcuno non sappia diversamente).

Risposte:


27

VNC è semplicemente inefficiente. VNC funziona praticamente prendendo una serie di schermate, comprimendole e spostandole attraverso la rete

Su Windows, RDP offre prestazioni migliori, ma credo che sia necessario un livello professionale o migliore sul server / sorgente per un corretto RDP.

un'assistenza remota strana può funzionare meglio per le tue esigenze - il suo RDP sia con l'utente al terminale, sia con l'utente del sistema remoto che vede la stessa schermata

EDIT: 4 anni dopo, sto usando nomachine per compiti simili - funzionerebbe su tutti i sistemi operativi e fa alcune altre cose utili.


2
Sì, non funziona su versioni non Pro, anche se suppongo che ci sia una soluzione alternativa . (E +1 ovviamente, VNC fa schifo)
slhck,

Ah, avrei dovuto stabilire cosa ho fatto nella mia modifica proprio ora!
Josh Comley,

sessioni simultanee, possono essere fatte con alcuni [hackery] ( missingremote.com/guide/… cose in stile VNC ... assistenza remota forse?. Modificato la mia risposta per includere l'assistenza remota.
Journeyman Geek

josh La tua modifica ha senso, ma nota l'ultima riga del post di @journeyman in cui dice che "l'assistenza remota" potrebbe funzionare meglio. Hai visto Assistenza remota? Lo uso di tanto in tanto e funziona benissimo.
Jay R. Wren,

Modificato per riflettere che l'assistenza remota è davvero ciò che devi usare;)
Journeyman Geek

15

VNC non è paragonabile allo streaming video. Nello streaming video in genere si trasferisce un flusso video precompresso tramite la rete. Per i flussi HD è spesso codificato H.264. Se si utilizza VNC, il computer host deve acquisire schermate e comprimerle prima di inviarle alla rete. Ci sono diversi vincoli qui:

  • Una compressione forte richiede molta potenza della CPU. Ad esempio, la codifica di un filmato di 90 minuti in H.264 in alta qualità richiede spesso più di 4 ore di tempo di compressione sul mio server Athlon X2 4450e. Di solito una compressione così forte non è adatta per applicazioni in tempo reale come il controllo remoto.
  • Una compressione meno forte a sua volta richiederà una maggiore larghezza di banda della rete che potrebbe diventare un problema su connessioni a bassa larghezza di banda come Internet.

Bene, ci sono un paio di "trucchi" che vengono applicati dai codec video e dalle utilità di controllo remoto e condivisione dello schermo. Innanzitutto provano a rilevare le modifiche dello schermo e trasferiscono solo l'immagine (compressa) delle modifiche. Questo di solito consente di risparmiare MOLTA banda e potenza di elaborazione. Tuttavia, per il trasferimento di video a schermo intero non aiuta molto poiché l'intero schermo deve essere trasferito troppo spesso. Come scritto sopra, le macchine attuali probabilmente non saranno in grado di ricodificare il contenuto dello schermo in Full-HD e trasmetterlo in streaming a un'applicazione di controllo remoto poiché l'host dovrà decodificare il contenuto video e quindi ricodificare le immagini non elaborate prima di inviare loro alla rete. Alcune vecchie macchine Dual-Core sono persino al limite quando decodificano i contenuti video Full-HD.

Per migliorare la velocità del telecomando VNC è possibile effettuare le seguenti operazioni:

  • La maggior parte dei server / client VNC supporta algoritmi di compressione multipli. Alcuni sono ottimizzati per una larghezza di banda ridotta, altri per una buona qualità dell'immagine e altri per una bassa latenza. Questo tocca un altro aspetto del telecomando. Poiché il servizio è importante per la latenza interattiva (non si desidera vedere la reazione a un clic del mouse subito dopo 5 minuti di codifica).
  • Prova a ridurre la quantità di modifiche dello schermo sul tuo computer host. Ad esempio, prova a disabilitare gli effetti del desktop di Windows, le animazioni, ecc. Ciò consente di risparmiare larghezza di banda poiché solo le parti modificate dello schermo vengono trasferite in rete.
  • Prova a disabilitare ulteriori effetti visivi sull'host come la trasparenza. Le finestre trasparenti utilizzate da Vista / Win7 riducono la "compressibilità" delle immagini. Le aree monocromatiche / "piatte" sono molto più efficienti da comprimere rispetto a colori vivaci e dettagli fantasiosi. Quindi disabilitare la trasparenza Aero e gli effetti del desktop velocizza davvero l'esperienza del controllo remoto. La maggior parte degli strumenti di controllo remoto consente persino di disabilitare tali effetti automaticamente al momento della connessione (ad es. Microsoft RDP e alcune implementazioni VNC).
  • Lo stesso vale per le immagini di sfondo. Prova a utilizzare un'impostazione di sfondo monocromatica invece delle immagini HD.

Un altro problema per VNC è che deve rilevare le modifiche sullo schermo. Alcune implementazioni VNC eseguono schermate "stupide" e le confrontano con quelle precedenti per rilevare le modifiche. Questo sta già prendendo molto potere. Alcune implementazioni più avanzate funzionano con driver di visualizzazione speciali (controllare UltraVNC) che qui sono più efficienti ma richiedono l'installazione di driver speciali.

Ovviamente tutto ciò non aiuta se stai riproducendo un video sul tuo computer host. In questo caso VNC dovrà ricodificare ~ 30 immagini a schermo intero al secondo e inviarlo via rete. Sulla maggior parte delle compressioni che possono essere eseguite in tempo reale dalle attuali CPU, un tale flusso richiederebbe> 8 Mbps di larghezza di banda. Quindi non è adatto per la maggior parte delle connessioni Internet (in particolare pensa alle connessioni DSL asimmetriche con una velocità di upload in genere inferiore a 1 Mbps, e sì, è la velocità di upload che conta sul lato host).

Potrebbe essere adatto all'uso LAN, ma qui dovresti probabilmente pensare di più a configurare un media server o condividere i tuoi media usando il media server DLNA / UPnP (anche Win7 media player può farlo). Quindi utilizzare un client DLNA per riprodurre i media condivisi.


1
+1, bella spiegazione. Vorrei anche scegliere la versione DLNA / Media Server.
Slhck,

Bel tentativo ma totalmente sbagliato, né il carico della CPU né l'utilizzo della rete sono comunque elevati. Anche con un semplice trasferimento di differenza potrebbe fare 20 fps su una rete da 1 gib.
Lothar,

4

La variante VNC più veloce in assoluto che abbia mai usato è UltraVNC con il driver Video Mirror installato. Il PSR è ancora notevolmente più veloce, ma non è poi così male.

Ho anche sentito cose davvero positive su ZeroRemote , ma non l'ho mai provato. Sembra che TrueRemote sia il suo successore.


Non supportato su GNU / Linux.
Hi-Angel,

1

Se stai cercando di guardare video attraverso una LAN, la soluzione più veloce in termini di pura velocità di disegno dello schermo è probabilmente Radmin .


3
Ho provato Radmin e, sì, è commerciale, ma ne vale la pena! Molto veloce. Fantastico.
Josh Comley,

1

Come dice @Journeyman Geek, VNC è inefficiente. Questo è in base alla progettazione in modo che VNC non debba "capire" ciò che il client remoto sta cercando di visualizzare.

RDP lo fa davvero, quindi può prendere scorciatoie e rendere le immagini più velocemente. RDP dice all'altra estremità, ad esempio, "il client ha aperto una finestra in questa posizione" invece di inviare i dati bitmap che rappresentano la modifica dello schermo.

Esistono hack "terminal server" che aggiungono funzionalità RDP alle versioni di Windows che non li caratterizzano, ma non li raccomando ufficialmente e li usi a tuo rischio. Tuttavia, penso che anche le versioni "Starter" di Windows 7 includano "Assistenza remota" (msra.exe) che potresti provare a utilizzare.

Le cose che puoi fare per migliorare le prestazioni di VNC, tuttavia, includono l'abbassamento della profondità di visualizzazione a 8 bit, la risoluzione dello schermo client e l'utilizzo della memorizzazione nella cache bitmap lato client. Ciò significa che VNC deve spedire meno dati sul filo e sperimenterai prestazioni migliori (ma non sembrerà carino).


0

Se stai cercando prestazioni che non devi usare VNC, prova qualcosa come LogMeIn . È gratuito e funziona bene.


Ho appena provato LogMeIn, non mi è piaciuto per niente!
Josh Comley,

3
Adoro LogMeIn per il controllo remoto, ma per i video? Non una possibilità. VNC è almeno P2P. Va direttamente tra la sorgente e la destinazione. LogMeIn introduce una connessione attraverso il loro server, il che significa che hai una latenza molto più elevata. Tutti i problemi con VNC e alcuni altri. È potente per quello per cui è progettato, ma non è progettato per video a schermo intero in tempo reale.
music2myear,

Non sto cercando di fare video, ho usato solo il video come test per garantire che la connessione tra i due computer non fosse lenta
Josh Comley,

0

Puoi anche provare TeamViewer, è gratuito per uso non commerciale ed è stato abbastanza veloce per me. Non l'ho ancora testato su video HD.


0

Per me, anche su Internet (con frequenze di ping> 50ms e banda discreta> 1mbit / s) ottengo un comportamento molto buono su UltraVNC. La magia arriva con la modifica delle impostazioni di connessione.

Dopo aver avviato il visualizzatore, vai su "Opzioni di connessione", disabilita "Seleziona automaticamente le migliori impostazioni", abilita "Stretto" e abbassa "Jpeg" a qualità inferiore, se necessario (2-4 funziona bene).

Questo è l'unico modo che conosco di scegliere Full Colours con prestazioni decenti. Successivamente otterrai diversi fps, abbastanza per ottenere una presentazione veloce su un film a schermo intero (abbastanza per tutto ciò che sto facendo, incluso lo sviluppo remoto, per la visione di film reali troppo lenta e inoltre non c'è audio).

Inoltre, nelle "Proprietà" del server, è utile avere (se non si utilizza il driver mirror che aiuta notevolmente le prestazioni) avere "Poll Full Screen", "Poll Foreground Window", "Poll Window Under Cursor", "System HookDll", " Bassa precisione "attivata. Fondamentalmente, praticamente tutto a sinistra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.