J'ai une application graphiquement intensive qui doit être transmise via X11. J'ai passé un peu de temps à rechercher X11 et son (in) efficacité, y compris cet excellent article: Pourquoi le transfert X11 est-il si inefficace? .
Une chose qui n'est toujours pas claire pour moi est de savoir si les performances du transfert X11 dépendent de l'application. J'avais l'impression que tout l'écran était retransmis, quoi qu'il se passe. Le transfert X11 doit alors être indépendant de l'application.
Alors, existe-t-il des informations concrètes sur ce qui est réellement transmis et si les performances de ssh -X dépendent de l'application?
-C
option sur la ligne de commande ou l'Compression: yes
option dans le fichier .ssh / config. Si vous effectuez un transfert X traditionnel de Dallas vers l'Australie via une liaison T1 encombrée, cela peut faire la différence entre avoir pour tâche de faire apparaître une boîte de dialogue à cinq niveaux dans l'interface et de sélectionner une case à cocher d'une tâche irréaliste à une simple frustrant deux heures. Heureusement, je n'ai pas eu besoin d'essayer avec Wayland, mais je suppose que cela s'est grandement amélioré.Réponses:
Non, c'est en fait le contraire. La raison pour laquelle le transfert X11 est appelé «transfert X11» est qu'il transporte les messages de protocole X réels utilisés par les applications pour afficher leurs fenêtres sur le «serveur X» (généralement Xorg). Ces messages sont des commandes pour créer / déplacer des fenêtres, dessiner du texte et des primitives graphiques (lignes / rectangles), dessiner des bitmaps, etc.
On pourrait dire que c'est conceptuellement l' opposé des protocoles "image plein écran" tels que VNC / RFB. Je pense qu'il est quelque peu comparable au RDP de Windows, qui a également été conçu pour le transport des commandes de dessin GDI.
Les raisons pour lesquelles vous voyez des différences entre les programmes sont donc:
Pour citer l'article que vous avez référencé, à l'origine la plupart des programmes basés sur X fonctionnaient comme ceci:
Donc quand un programme voulait montrer un bouton, il envoyait juste quelques commandes courtes - "dessiner un rectangle", "dessiner du texte", et peut-être quelques lignes pour lui donner un aspect 3D.
Au fil du temps, cela a changé, les programmes ont commencé à faire le rendu par eux-mêmes, et bon nombre de ces instructions sont devenues simplement "voici un bitmap que j'ai déjà rendu, mettez-le à l'écran" - très rapide localement, mais très lent sur le réseau en raison de l'absence de X11 compression d'image.
Cela signifie que les programmes construits à l'aide de boîtes à outils modernes sont beaucoup plus lents que X11 en réseau, même si c'est quelque chose d'aussi basique que les polices anti-crénelées.
(En revanche, RDP s'est adapté au fil du temps et comprend diverses formes de compression d'image telles que JPEG et même H.264; vous pouvez souvent remarquer les artefacts de compression pendant le chargement de l'image complète.)
Heureusement, la plupart des boîtes à outils d'interface utilisateur telles que GTK implémentent le suivi des dommages, de sorte que seules les régions mises à jour sont renvoyées. Cependant, quelques programmes (comme plusieurs versions de Firefox / Thunderbird) ne le supportent pas et demandent un nouveau rendu complet de la fenêtre entière, même si elle n'a pas vraiment été mise à jour.
C'est une autre différence entre les programmes - ceux qui se comportent bien sont encore assez utilisables sur le réseau, mais ceux qui sont bogués peuvent saturer un lien de 100 Mbps sans rien d'utile.
la source