web-dev-qa-db-fra.com

Pourquoi VNC sous Windows est-il si lent?

Lors d'un test, je pouvais diffuser un film Full HD sur notre réseau à partir de l'ordinateur de mon ami, sans problème. C'est aussi rapide que je pourrais vouloir.

Mais VNC est douloureusement lent. Nous avons essayé Real VNC et Tight VNC. J'ai joué avec les paramètres Capture Method, mais rien ne semble faire la différence. c'est tellement lent.

Quelqu'un a-t-il des conseils sur l'utilisation de VNC, sur l'amélioration de la vitesse, ou sur des alternatives?

Est-ce que c'est la nature de ne pas pouvoir remarquer assez rapidement les parties invalidées 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 pouvoir visualiser et contrôler les ordinateurs de chacun sans verrouiller l'hôte, de sorte que RDP ne fonctionnera pas (à moins que quelqu'un ne sache autrement).

24
Josh Comley

VNC est tout simplement inefficace. VNC fonctionne en prenant une série de captures d'écran, en les compressant et en les lançant sur le réseau.

Sous Windows, RDP vous donnera de meilleures performances, mais vous avez besoin d’un niveau professionnel ou supérieur sur le serveur/source pour obtenir le bon RDP, je crois.

bizarrement une assistance à distance peut mieux répondre à vos besoins - son RDP avec l'utilisateur du terminal et l'utilisateur du système distant affichant le même écran

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

23
Journeyman Geek

VNC n'est pas comparable au streaming vidéo. En 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 alors prendre des instantanés d'écran et les compresser avant de les envoyer au réseau. Il y a plusieurs contraintes ici:

  • Une compression forte nécessite beaucoup de puissance de calcul. Par exemple, encoder un film 90 minutes au format H.264 en haute qualité nécessite souvent plus de 4 heures de temps de compression sur mon serveur Athlon X2 4450e. Habituellement, une compression aussi forte ne convient pas aux applications en temps réel telles que le contrôle à distance.
  • Une compression moins forte nécessitera à son tour davantage de bande passante réseau, ce qui pourrait poser problème pour 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 ne transfèrent que l’image (compressée) des changements. Cela économise généralement BEAUCOUP de bande passante et de puissance de traitement. Toutefois, pour le transfert vidéo en plein écran, cela n'aide pas beaucoup car tout l'écran doit être transféré trop souvent. Comme indiqué ci-dessus, les machines actuelles ne seront probablement pas en mesure de coder en temps réel 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 de les envoyer. les au réseau. Certains anciens ordinateurs Dual-Core sont même à la limite lors du décodage de contenu vidéo Full-HD. Ne parlez même pas de la nécessité de ré-encoder les images Full-HD à l'écran avant de les envoyer au client VNC.

Pour améliorer votre vitesse de contrôle à distance VNC, vous pouvez effectuer les opérations suivantes:

  • La plupart des serveurs/clients VNC prennent en charge plusieurs algorithmes de compression. Certains d'entre eux sont optimisés pour une faible bande passante, d'autres pour une bonne qualité d'image et d'autres pour une faible latence. Cela touche un autre aspect de la télécommande. Comme le service est interactif, la latence est importante (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 enregistre des pertes de bande, 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, tels que la transparence. Les fenêtres transparentes utilisées par Vista/Win7 réduisent la "compressibilité" des images. Les zones unicolores/"plates" sont beaucoup plus efficaces à compresser que des couleurs vives et des détails sophistiqués. Ainsi, la désactivation de la transparence Aero et des effets de bureau accélère considérablement 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 de VNC).
  • La même chose s'applique aux images d'arrière-plan. Essayez d’utiliser un paramètre d’arrière-plan unicolore au lieu d’images HD.

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

Bien sûr, tout cela n’aide en rien si vous lisez une vidéo sur votre ordinateur hôte. Dans ce cas, VNC devra recoder environ 30 images en plein écran par seconde et les envoyer via le réseau. Sur la plupart des compressions pouvant être effectuées en temps réel par les processeurs actuels, un tel flux prendrait plus de 8 Mbps de bande passante. Donc, cela ne convient pas à la plupart des connexions Internet (pensez en particulier aux connexions DSL asymétriques avec une vitesse de téléchargement généralement inférieure à 1 Mbit/s, et oui, c'est la vitesse de téléchargement qui importe du côté de l'hôte).

Cela pourrait convenir à une utilisation en réseau local, mais ici, vous devriez probablement penser davantage à la configuration d’un serveur multimédia ou partager votre contenu multimédia à l’aide du serveur multimédia DLNA/UPnP (même le lecteur multimédia Win7 peut le faire). Ensuite, utilisez un client DLNA pour lire le média partagé.

15
SkyBeam

La variante de 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 grave.

J'ai aussi entendu de très bonnes choses à propos de ZeroRemote , mais je ne l'ai jamais testé. Il apparaît que TrueRemote est son successeur.

4
afrazier

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

1
wizzard0

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

1
Shinrai

Comme @Journeyman Geek le dit, VNC est inefficace. Cela est voulu par la conception même pour que VNC ne doive pas "comprendre" ce que le client distant tente d'afficher.

RDP le fait effectivement, alors il peut 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 piratages de "serveur de terminal" qui ajouteront une fonctionnalité RDP aux versions de Windows qui ne les utilisent pas, mais je ne les recommande pas officiellement et vous les utilisez à vos risques et périls. Cependant, je pense que même les versions "Starter" de Windows 7 sont accompagnées de "Assistance à distance" (msra.exe) que vous pouvez essayer d’utiliser.

Toutefois, vous pouvez améliorer la performance de VNC en réduisant la profondeur d’affichage à 8 bits, en diminuant la résolution de l’écran du client et en utilisant la mise en cache bitmap côté client. Cela signifie que VNC doit envoyer moins de données sur le réseau et vous obtiendrez de meilleures performances (mais cela ne sera pas beau).

1
LawrenceC

Si vous recherchez des performances dont vous ne devez pas utiliser VNC, essayez quelque chose comme LogMeIn . C'est gratuit et fonctionne bien.

0
Jeff F.

Pour moi, même sur Internet (avec des taux de ping> 50ms et une bande passante> 1 Mbit/s), le comportement sur UltraVNC est très bon. La magie vient avec la modification des 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 "Serré" et baissez le "Jpeg" pour réduire la qualité, si nécessaire (2-4 fonctionne bien).

C’est le seul moyen que je connaisse de créer des couleurs optimales avec des performances décentes. Vous obtiendrez ensuite plusieurs images par seconde, suffisamment 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 visionnage de film réel trop lent et sans audio).

En outre, dans le "Propriétés" du serveur, il est utile d’avoir (si le pilote miroir n’est pas utilisé, ce qui améliore grandement les performances) d’avoir "Sondage plein écran", "Fenêtre au premier plan du sondage", "Fenêtre du sondage sous le curseur", "Crochet système" Basse précision "activé. En gros, à peu près tout sur la gauche.

0
Andreas Reiff