Pourquoi VNC sur Windows est-il si lent?

28

Dans un test, j'ai pu diffuser un film Full HD sur notre réseau depuis l'ordinateur de mon ami, pas de problème. C'est aussi vite que je le voudrais.

Mais VNC est douloureusement lent. Nous avons essayé Real VNC et Tight VNC, j'ai joué avec les Capture Methodparamètres, mais rien ne semble faire de différence; c'est tellement lent.

Quelqu'un a-t-il des conseils sur l'utilisation de VNC, sur la façon d'améliorer la vitesse ou peut-être des alternatives?

Est-ce la nature de ne pas pouvoir remarquer assez rapidement des parties invalides de l'écran, ou y a-t-il un problème de réseau qui le ralentit peut-être?

Nous utilisons tous les deux Windows 7.

Nous devons être en mesure de visualiser et de contrôler les PC de chacun sans verrouiller l'hôte, donc RDP ne fonctionnera pas (sauf si quelqu'un sait le contraire).

Josh Comley
la source

Réponses:

27

VNC est tout simplement inefficace. VNC fonctionne à peu près en prenant une série de captures d'écran, en les compressant et en les répartissant sur le réseau

Sur Windows, RDP vous donnera de meilleures performances, mais vous avez besoin d'un professionnel ou mieux du côté serveur / source pour un RDP approprié, je crois.

une assistance à distance bizarre peut mieux fonctionner pour vos besoins - son RDP avec à la fois l'utilisateur du terminal et l'utilisateur du système distant voyant le même écran

EDIT: 4 ans plus tard , j'utilise nomachine pour des tâches similaires - fonctionnerait sur tous les systèmes d'exploitation et fait quelques autres choses utiles.

Compagnon Geek
la source
2
Oui, ne fonctionne pas sur les versions non-Pro, bien qu'il y ait une solution de contournement, je suppose. (Et +1 bien sûr, VNC craint)
slhck
Ah, j'aurais dû stipuler ce que j'ai fait dans mon montage tout à l'heure!
Josh Comley
sessions simultanées, peuvent être effectuées avec certains [hackery] ( missingremote.com/guide/… trucs de style VNC ... assistance à distance peut-être?. Modifié ma réponse pour inclure l'assistance à distance.
Journeyman Geek
josh Votre modification est logique, mais remarquez la dernière ligne du message @journeyman où il dit que "l'assistance à distance" pourrait mieux fonctionner. Avez-vous regardé l'assistance à distance? Je l'utilise de temps en temps et ça marche très bien.
Jay R. Wren,
Modifié pour refléter que l'assistance à distance est vraiment ce dont vous avez besoin;)
Journeyman Geek
15

VNC n'est pas comparable au streaming vidéo. Dans le streaming vidéo, vous transférez généralement un flux vidéo précompressé via le réseau. Pour les flux HD, il est souvent codé H.264. Si vous utilisez VNC, votre ordinateur hôte doit prendre des instantanés d'écran et les compresser avant de les envoyer au réseau. Il y a plusieurs contraintes ici:

  • Une forte compression nécessite beaucoup de puissance CPU. Par exemple, l'encodage d'un film de 90 minutes en H.264 en haute qualité prend souvent plus de 4 heures de compression sur mon serveur Athlon X2 4450e. Habituellement, une compression aussi forte n'est pas adaptée aux applications en temps réel comme la télécommande.
  • Une compression moins forte nécessitera à son tour plus de bande passante réseau, ce qui pourrait devenir un problème sur les connexions à faible bande passante comme Internet.

Eh bien, il existe quelques "astuces" qui sont appliquées par les codecs vidéo et les utilitaires de contrôle à distance et de partage d'écran. Tout d'abord, ils essaient de détecter les changements d'écran et de transférer uniquement l'image (compressée) des changements. Cela économise généralement BEAUCOUP de bande passante et de puissance de traitement. Cependant, pour le transfert vidéo en plein écran, cela n'aide pas beaucoup car tout l'écran doit être retransféré trop souvent. Comme indiqué ci-dessus, les machines actuelles ne seront probablement pas en mesure de rel-coder le contenu de votre écran en Full-HD et de le diffuser vers une application de contrôle à distance car votre hôte devra décoder le contenu vidéo, puis ré-encoder les images brutes avant d'envoyer les au réseau. Certaines anciennes machines Dual-Core sont même à la limite lors du décodage de contenu vidéo Full-HD.

Pour améliorer la vitesse de votre télécommande VNC, vous pouvez procéder comme suit:

  • La plupart des serveurs / clients VNC prennent en charge plusieurs algorithmes de compression. Certains d'entre eux sont optimisés pour une petite bande passante, certains pour une bonne qualité d'image et d'autres pour une faible latence. Cela touche un autre aspect de la télécommande. Étant donné que le service est une question de latence interactive (vous ne voulez pas voir la réaction à un clic de souris juste après 5 minutes d'encodage).
  • Essayez de réduire le nombre de changements d'écran sur votre ordinateur hôte. Par exemple, essayez de désactiver les effets de bureau Windows, les animations, etc. Cela économise la bande passante car seules les parties modifiées de l'écran sont transférées sur le réseau.
  • Essayez de désactiver d'autres effets visuels sur l'hôte comme la transparence. Les fenêtres transparentes utilisées par Vista / Win7 réduisent la "compressibilité" des images. Les zones unies / "plates" sont beaucoup plus efficaces à comprimer que les couleurs vives et les détails fantaisistes. La désactivation de la transparence Aero et des effets de bureau accélère donc vraiment l'expérience de contrôle à distance. La plupart des outils de contrôle à distance permettent même de désactiver automatiquement ces effets lors de la connexion (par exemple Microsoft RDP et certaines implémentations VNC).
  • Il en va de même pour les images d'arrière-plan. Essayez d'utiliser le paramètre d'arrière-plan uni au lieu des images HD.

Un autre problème pour VNC est qu'il doit détecter les changements sur votre écran. Certaines implémentations VNC font des captures d'écran "stupides" et les comparent à la capture d'écran précédente pour détecter les changements. Cela prend déjà beaucoup de pouvoir. Certaines implémentations plus avancées fonctionnent avec des pilotes d'affichage spéciaux (vérifiez UltraVNC) qui sont plus efficaces ici mais nécessitent l'installation de pilotes spéciaux.

Bien sûr, tout cela n'aide pas si vous lisez une vidéo sur votre machine hôte. Dans ce cas, VNC devra ré-encoder ~ 30 images plein écran par seconde et les envoyer via le réseau. Sur la plupart des compressions qui peuvent être effectuées en temps réel par les CPU d'aujourd'hui, un tel flux prendrait> 8 Mbps de bande passante. Il n'est donc pas adapté à la plupart des connexions Internet (pensez en particulier aux connexions DSL asymétriques avec généralement une vitesse de téléchargement inférieure à 1 Mbps, et oui, c'est la vitesse de téléchargement qui compte du côté de l'hôte).

Il peut convenir à une utilisation LAN, mais ici, vous devriez probablement penser à configurer un serveur multimédia ou à partager vos médias à l'aide du serveur multimédia DLNA / UPnP (même le lecteur multimédia Win7 peut le faire). Utilisez ensuite un client DLNA pour lire les médias partagés.

SkyBeam
la source
1
+1, belle explication. J'irais également pour la version DLNA / Media Server.
slhck
Bien essayé mais totalement faux, ni la charge CPU ni l'utilisation du réseau ne sont de toute façon élevées. Même avec un simple transfert de différence, il pourrait faire un 20fps sur un réseau 1gib.
Lothar
4

La variante VNC la plus rapide que j'ai jamais utilisée est UltraVNC avec le pilote Video Mirror installé. RDP est encore sensiblement plus rapide, mais ce n'est pas aussi mauvais.

J'ai également entendu de très bonnes choses à propos de ZeroRemote , mais je ne l'ai jamais testé. Il semble que TrueRemote soit son successeur.

afrazier
la source
Non pris en charge sur GNU / Linux.
Hi-Angel
1

Si vous essayez de regarder des vidéos sur un réseau local, la solution la plus rapide en termes de vitesse de dessin d'écran est probablement Radmin .

Shinrai
la source
3
J'ai essayé Radmin et, oui, c'est commercial, mais ça en vaut la peine! Très vite. Fantastique.
Josh Comley
1

Comme le dit @Journeyman Geek, VNC est inefficace. Ceci est voulu par la conception afin que VNC n'ait pas à "comprendre" ce que le client distant essaie d'afficher.

RDP le fait, il peut donc prendre des raccourcis et rendre les images plus rapidement. RDP indique à l'autre extrémité, par exemple, "le client a ouvert une fenêtre à cet emplacement" au lieu d'envoyer les données bitmap représentant le changement d'écran.

Il existe des hacks "de serveur de terminaux" qui ajouteront la capacité RDP aux versions de Windows qui ne les comportent pas, mais je ne les recommande pas officiellement et vous les utilisez à vos propres risques. Cependant, je pense que même les versions "Starter" de Windows 7 sont livrées avec "Assistance à distance" (msra.exe) que vous pourriez essayer d'utiliser.

Cependant, vous pouvez améliorer les performances VNC en réduisant la profondeur d'affichage à 8 bits, en réduisant la résolution de l'écran client et en utilisant la mise en cache bitmap côté client. Cela signifie que VNC doit envoyer moins de données sur le câble et vous bénéficierez de meilleures performances (mais ce ne sera pas joli).

LawrenceC
la source
0

Si vous recherchez des performances dont vous n'avez pas besoin d'utiliser VNC, essayez quelque chose comme LogMeIn . C'est gratuit et fonctionne bien.

Jeff F.
la source
Je viens d'essayer LogMeIn, je n'ai pas aimé du tout!
Josh Comley
3
J'adore LogMeIn pour la télécommande, mais pour la vidéo? Aucune chance. VNC est au moins P2P. Il va directement entre la source et la destination. LogMeIn introduit une connexion via leur serveur, ce qui signifie que vous avez une latence beaucoup plus élevée. Tous les problèmes avec VNC et quelques autres. Il est puissant pour ce qu'il est conçu, mais il n'est pas conçu pour la vidéo en plein écran en temps réel.
music2myear
Je n'essaye pas de faire de la vidéo, j'ai seulement utilisé la vidéo comme test pour m'assurer que la connexion entre les deux ordinateurs n'était pas lente
Josh Comley
0

Vous pouvez également essayer TeamViewer, il est gratuit pour une utilisation non commerciale et a été assez rapide pour moi. Je ne l'ai cependant pas testé sur la vidéo HD.

wizzard0
la source
0

Pour moi, même sur Internet (avec des taux de ping> 50 ms et une bande passante décente> 1 Mbits / s), j'obtiens un très bon comportement sur UltraVNC. La magie vient de changer les paramètres de connexion.

Après avoir démarré la visionneuse, allez dans "Options de connexion", désactivez "Sélection automatique des meilleurs paramètres", activez "Tight" et abaissez le "Jpeg" pour réduire la qualité, si nécessaire (2-4 fonctionne bien).

C'est la seule façon que je connaisse de créer des couleurs pleines avec des performances décentes. Vous obtiendrez ensuite plusieurs images par seconde, assez pour obtenir un diaporama rapide sur un film en plein écran (assez pour tout ce que je fais, y compris le développement à distance, pour un vrai film trop lent et il n'y a pas non plus d'audio).

De plus, dans le serveur "Propriétés", il est utile (si vous n'utilisez pas le pilote miroir qui améliore grandement les performances) d'avoir "Sondage plein écran", "Sondage de la fenêtre de premier plan", "Sondage de la fenêtre sous le curseur", "System HookDll", " Basse précision "activée. Fondamentalement, à peu près tout sur la gauche.

Andreas Reiff
la source