X11 - Encaminhamento e eficiência

12

Eu tenho um aplicativo graficamente intensivo que precisa ser encaminhado pelo X11. Passei algum tempo pesquisando o X11 e sua (in) eficiência, incluindo este ótimo post: Por que o encaminhamento do X11 é tão ineficiente? .

Uma coisa que ainda não está clara para mim é se o desempenho do encaminhamento do X11 depende do aplicativo. Fiquei com a impressão de que a tela inteira é encaminhada, não importa o que esteja acontecendo. O encaminhamento X11 deve ser independente de aplicativo.

Portanto, existe alguma informação concreta sobre o que realmente é encaminhado e se o desempenho do ssh -X depende do aplicativo?

Fang
fonte
2
"Então, há alguma informação concreta sobre o que realmente é encaminhado e se o desempenho do ssh -X depende do aplicativo?" Sim. Como um começo, ver a palestra de Daniel Stone A verdadeira história por trás Wayland e X do LinuxConf.au 2013.
sampablokuper
1
"Fiquei com a impressão de que a tela inteira é encaminhada" É difícil entender o que causaria essa impressão, porque o que as pessoas costumam fazer com o encaminhamento do SSH X é executar manualmente aplicativos individuais no shell remoto; você poderia elaborar como está lançando os aplicativos?
#
1
Um fator a ser observado se você estiver transportando a sessão X por um túnel SSH: o ssh pode fazer compactação. É a -Copção na linha de comando ou a Compression: yesopção no arquivo .ssh / config. Se você estiver fazendo o encaminhamento tradicional do X de Dallas para a Austrália através de um link T1 congestionado, essa pode ser a diferença entre ter a tarefa de abrir uma caixa de diálogo com cinco níveis de profundidade na interface e marcar uma caixa de seleção de uma tarefa irreal para uma simplesmente excessiva. frustrantes duas horas. Felizmente, não tive a necessidade de tentar isso com Wayland, mas presumo que ele tenha melhorado bastante.
Ed Grimm
Não quero iniciar uma discussão extensa nos comentários, principalmente porque minha pergunta foi muito bem respondida pelo @grawity. Por "tela inteira", quis dizer que os dados encaminhados pelo túnel ssh sempre seriam uma descrição simples de pixels na tela. @ EdGrimm: Obrigado pelo seu comentário sobre compactação. Estou ciente disso. Em nosso cenário específico, o X11 é encaminhado por um link de LAN de 10 Gbit e a compactação / sem compactação parece não fazer absolutamente nenhuma diferença.
Fang

Respostas:

29

Fiquei com a impressão de que a tela inteira é encaminhada, não importa o que esteja acontecendo. O encaminhamento X11 deve ser independente de aplicativo.

Não, na verdade é o contrário. O motivo pelo qual o encaminhamento do X11 é chamado de "encaminhamento do X11" é porque ele transporta as mensagens reais do protocolo X usadas pelos aplicativos para renderizar suas janelas no "servidor X" (normalmente Xorg). Essas mensagens são comandos para criar / mover janelas, desenhar primitivas gráficas e de texto (linhas / retângulos), desenhar bitmaps etc.

Você poderia dizer que é conceitualmente o oposto de protocolos de "imagem em tela cheia", como VNC / RFB. Eu acho que é um pouco comparável ao RDP do Windows, que também foi feito para transportar comandos de desenho GDI.

Portanto, os motivos pelos quais você vê diferenças entre os programas são:

  1. Para citar a postagem que você referenciou, originalmente a maioria dos programas baseados em X funcionavam da seguinte maneira:

    Basicamente, o X11 não envia a tela para o seu computador, mas envia as instruções de exibição para que o servidor X no seu computador local possa recriar a tela no seu sistema local.

    Portanto, quando um programa queria mostrar um botão, ele enviava apenas alguns comandos curtos - "desenhe um retângulo", "desenhe texto" e talvez algumas linhas para torná-lo 3D.

  2. Com o tempo, isso mudou, os programas começaram a renderizar sozinhos e muitas dessas instruções se tornaram apenas "aqui está um bitmap que eu já renderizei, coloque isso na tela" - muito rápido localmente, mas muito lento na rede devido à falta do X11 compressão de imagem.

    Isso significa que os programas criados com kits de ferramentas modernos são muito mais lentos em relação ao X11 em rede, mesmo que seja algo tão básico quanto as fontes com antialias.

    (Por outro lado, o RDP se adaptou ao longo do tempo e inclui várias formas de compactação de imagem, como JPEG e até H.264; você pode observar os artefatos de compactação enquanto a imagem completa está sendo carregada.)

  3. Felizmente, a maioria dos kits de ferramentas de interface do usuário, como o GTK, implementa o rastreamento de danos, para que apenas regiões atualizadas sejam reenviadas. No entanto, alguns programas (como várias versões do Firefox / Thunderbird) não suportam isso e solicitam uma nova renderização completa de toda a janela, mesmo que ela não tenha sido realmente atualizada.

    Essa é outra diferença entre os programas - os de bom comportamento ainda são bastante utilizáveis ​​na rede, mas os de buggy podem saturar um link de 100 Mbps, sem absolutamente nada útil.

user1686
fonte
1
Lembro-me de uma vez tentando configurar um servidor MythTV. O utilitário "setup" era um aplicativo Qt e demorou alguns minutos para exibir cada página da configuração, apesar de um link ADSL razoável como gargalo (quase 8 Mb / s). O trabalho de alguns minutos levou várias horas por causa disso - teria sido muito mais fácil com uma interface do usuário do Curses ou mesmo um aplicativo X11 bem comportado. Se eu soubesse quantos problemas seriam, teria esperado uma ou duas semanas até estar no local e usado uma das caixas de front-end sem disco para exibição. Eu queria que o servidor estivesse funcionando mais cedo do que isso.
Toby Speight
1
Em defesa desses "programas de buggy", deve-se salientar que isso é culpa da ideologia do kit de ferramentas X +, que basicamente torna necessário que esses programas de buggy sejam buggy em primeiro lugar. Você pensaria que um programa poderia chamar uma API (que envia um comando) para ter uma "janela de aparência normal", um menu e um botão aqui e uma barra de rolagem ali, mas não. Você ou o kit de ferramentas deve fazer tudo manualmente. Estou realmente não é grande fã de MS e menos ainda a Apple, mas eles têm essas coisas direito enquanto o ecossistema X tem sugado por décadas, e ainda suga.
Damon
Não tenho certeza se existe alguma diferença. O que torna o UWP, o WinForms ou o comctl32 do Windows menos um "kit de ferramentas" que o GTK e o QT? Eles também não fazem tudo "à mão"?
User1686