Existe uma opção de queda de quadros no X11Forwarding?

8

Estou executando um modelo de visão computacional em uma VM remota sem cabeça (Ubuntu 16.04) sobre o X11Forwarding com o bom Putty e o Xming como meu Windows X Server.

Tudo está bem, mas parece que não há queda de quadros se a largura de banda cliente-servidor não puder acompanhar, o que significa que meu aplicativo fica mais lento e renderiza apenas alguns quadros por segundo quando pode fazer centenas se a largura de banda é suficiente.

Existe uma opção de queda do quadro de força incorporada no encaminhamento X11 e, se houver, como ativá-lo?

evilSnobu
fonte
4
O protocolo X11 não possui noção de quadros e, portanto, não suporta queda de quadros (ou seja, não há ponto de ressincronização).
Simon Richter

Respostas:

9

Eu recomendo o Xpra para esse tipo de caso de uso: além de oferecer a capacidade de desconectar e reconectar-se a aplicativos X em execução em um host remoto, ele também suporta uma variedade de configurações de codificação de imagem e atualização de janela para fornecer uma experiência decente em circunstâncias diferentes.

Ele tem um cliente Windows nativo, portanto, deve ser fácil o suficiente para configurar. Você precisará instalá-lo também na VM remota, mas isso é tão fácil quanto apt install xprano Ubuntu.

Stephen Kitt
fonte
Isso parece muito promissor, no entanto, não consigo vinculá-lo a uma porta TCP.
evilSnobu
Você está se conectando usando SSH ou diretamente ?
Stephen Kitt
Meu Xorg foi foda. Corrigido e está tudo bem agora, essa coisa Xpra é realmente boa, especialmente quando você muda para a codificação HEVC (x265). Muito, muito bom e não bloqueando. Obrigado!
evilSnobu
Não posso mais recomendar o Xpra. É provavelmente a melhor opção gratuita disponível hoje.
wbkang 13/09/18
5

De acordo com essa pergunta relacionada , parece que X11Forwarding não é a melhor opção para aplicativos gráficos, pois o protocolo X11 não foi projetado com o desempenho de desenho de bitmap em mente.

Basicamente, ele envia instruções de desenho para a rede, o que é "bom" se estivermos falando de algumas janelas com texto, mas obviamente é um exagero o fato de milhões de pixels mudarem todos os quadros, especialmente quando a rede experimenta alta latência / jitter / pacote perda.

Conforme sugerido na resposta à pergunta mencionada, você pode tentar o x2go e verificar se ele se adapta às suas necessidades.

EDITAR conforme comentário

Se x2gonão funcionar, você pode tentar o VNCque parece ter recursos de queda de quadros. Por exemplo, eu uso x11vncpara conectar à minha área de trabalho a partir de uma conexão remota com a x11vnc -display :0 -auth .Xauthorityqual é conectada ao meu monitor.

Não sei se funcionaria, Xmingmas você pode tentar.

Mr Shunz
fonte
Infelizmente, a porta do x2go para Windows está completamente quebrada, já tentei.
evilSnobu
No passado, eu também tentei o x2go com um cliente Mac e desisti dele.
Rui F Ribeiro
3

O protocolo X11 puro não se presta bem para garantir a transmissão e muito sobre SSH.

Eu recomendo o NoMachine. Pode fazer compressão de largura de banda e otimização de rede. Também possui clientes para Mac, Windows e Linux.

PS. NoMachine tem as versões gratuita e paga. Eu sempre usei o grátis.

Veja NoMachine

Para áreas de trabalho virtuais (caso a), o modo de gráficos vetoriais X11 (anteriormente conhecido como modo "leve") é ativado por padrão. Esse método reduz o uso da largura de banda (e os requisitos de HW, porque consome menos CPU) no cliente e no servidor, otimizando o protocolo X11 por meio de técnicas de compactação, supressão de ida e volta e algoritmos de cache.

O modo de gráficos vetoriais X11 é conveniente para evitar perda de qualidade da imagem e pode ser útil ao trabalhar com GUIs tradicionais ou grande quantidade de texto, mas não é sugerido para conteúdos ou aplicativos multimídia com muitos efeitos gráficos.

Mais sobre o modo de gráficos vetoriais X11: https://www.nomachine.com/AR02L00779

Para conexões com a área de trabalho física ou quando o modo de gráficos vetoriais X11 estiver desativado para áreas de trabalho virtuais (caso b), o NoMachine implementa o protocolo de exibição usando uma combinação de codificação de vídeo e imagem com base em codecs padrão e várias técnicas desenvolvidas pelo próprio NoMachine.

Também implementa uma técnica de qualidade de exibição adaptativa de rede. Isso significa que o NoMachine tentará reduzir automaticamente a qualidade da tela quando detectar que a rede está congestionada. O objetivo deste mecanismo é manter a sessão responsiva através de todas as diferentes condições de rede.

Mais sobre como encontrar a configuração mais adequada para reprodução de multimídia:

https://www.nomachine.com/AR01M00832

Rui F Ribeiro
fonte
É "Gratuito como em anúncio de código fechado para a nossa opção paga" ou "Gratuito como em Stallman"?
pipe
@ pipe Em algum lugar no meio, eu acho. Eu usei a versão gratuita para uso pessoal com muita satisfação, também estive envolvido lateralmente e conheço grandes projetos que usavam a versão gratuita. Aparentemente, a versão paga pode evitar alguns problemas ao personalizar as coisas em ambientes mais complexos do que as pessoas mais experientes me disseram.
Rui F Ribeiro