Por que o VNC no Windows é tão lento?

22

Em um teste, eu poderia transmitir um filme em alta definição em toda a nossa rede do computador do meu amigo, sem problemas. É tão rápido quanto eu poderia querer.

Mas o VNC é dolorosamente lento. Nós tentamos o Real VNC e o Tight VNC, eu brinquei com as configurações de Capture Method , mas nada parece fazer diferença; é tão lento.

Alguém tem alguma dica sobre o uso do VNC, sobre como melhorar a velocidade ou, talvez, sobre quaisquer alternativas?

É a natureza de não ser capaz de notar partes invalidadas da tela com rapidez suficiente, ou existe alguma coisa na rede que a atrase talvez?

Ambos utilizamos o Windows 7.

Precisamos ser capazes de ver e controlar os PCs uns dos outros sem bloquear o host, para que o RDP não funcione (a menos que alguém saiba o contrário).

    
por Josh Comley 18.05.2011 / 16:26

8 respostas

19

O VNC é simplesmente ineficiente. O VNC funciona basicamente com uma série de capturas de tela, compactando-as e lançando-as pela rede

No Windows, o RDP lhe dará melhor desempenho, mas você precisa de um profissional ou melhor no servidor / fim de fonte para o RDP adequado, acredito.

wierdly assistência remota pode funcionar melhor para as suas necessidades -sua RDP com o usuário no terminal e o usuário no sistema remoto vendo a mesma tela

EDIT: 4 anos depois, eu estou usando nomachine para tarefas semelhantes - funcionaria em sistemas operacionais, e faz alguns outros coisas.

    
por 18.05.2011 / 16:30
13

O VNC não é comparável ao streaming de vídeo. Na transmissão de vídeo, você normalmente transfere um fluxo de vídeo pré-compactado pela rede. Para fluxos HD, é frequentemente codificado em H.264. Se você usar o VNC, o computador host precisará tirar instantâneos da tela e compactá-los antes de enviá-los para a rede. Existem várias restrições aqui:

  • A compactação strong precisa de muita energia da CPU. Por exemplo, a codificação de um filme de 90 minutos em H.264 em alta qualidade geralmente leva mais de 4 horas de tempo de compactação no meu servidor Athlon X2 4450e. Normalmente, essa compactação strong é inadequada para aplicativos em tempo real, como controle remoto.
  • A compactação menos strong, por sua vez, exigirá mais largura de banda de rede, o que pode se tornar um problema em conexões de baixa largura de banda, como a Internet.

Bem, há alguns "truques" aplicados por codecs de vídeo e utilitários de controle remoto e compartilhamento de tela. Primeiro de tudo, eles tentam detectar as mudanças na tela e transferem a imagem (compactada) apenas das alterações. Isso geralmente economiza muita largura de banda e poder de processamento. No entanto, para a transferência de vídeo em tela cheia, não ajuda muito, pois a tela inteira precisa ser transferida com muita frequência. Como está escrito acima, as máquinas atuais provavelmente não poderão codificar em tempo real o conteúdo da tela em Full-HD e transmiti-lo a um aplicativo de controle remoto, pois o host terá que decodificar o conteúdo de vídeo e recodificar as imagens antes de enviá-las los para a rede. Algumas máquinas Dual-Core mais antigas estão no limite quando decodificam conteúdo de vídeo Full-HD. Nem mesmo falando sobre ter que recodificar as imagens Full-HD na tela novamente antes de enviá-las para o cliente VNC.

Para melhorar sua velocidade de controle remoto VNC, você pode fazer o seguinte:

  • A maioria dos servidores / clientes VNC oferece suporte a vários algoritmos de compactação. Alguns deles são otimizados para pequena largura de banda, alguns para boa qualidade de imagem e outros para baixa latência. Isso toca em outro aspecto do controle remoto. Como o serviço é de latência interativa, você não quer ver a reação a um clique do mouse logo após 5 minutos de codificação).
  • Tente reduzir a quantidade de alterações na tela em sua máquina host. Por exemplo, tente desabilitar os efeitos da área de trabalho do Windows, animações, etc. Isso economiza largura de banda, pois somente partes alteradas da tela são transferidas pela rede.
  • Tente desativar mais efeitos visuais no host, como transparência. O Windows transparente usado pelo Vista / Win7 reduz a "compressibilidade" das imagens. Áreas uni-coloridas / "planas" são muito mais eficientes para comprimir do que cores vibrantes e detalhes extravagantes. Então, desabilitar a transparência do Aero e os efeitos da área de trabalho realmente aceleram a experiência do controle remoto. A maioria das ferramentas de controle remoto permite até mesmo desativar esses efeitos automaticamente na conexão (por exemplo, o Microsoft RDP e algumas implementações do VNC).
  • O mesmo se aplica às imagens de fundo. Tente usar a configuração de fundo colorida em vez de fotos em alta definição.

Outro problema para o VNC é que ele precisa detectar as alterações na sua tela. Algumas implementações VNC fazem screenshots "burras" e as comparam com a captura de tela anterior para detectar mudanças. Isso já está tomando muito poder. Algumas implementações mais avançadas funcionam com drivers de vídeo especiais (verifique UltraVNC), que são mais eficientes aqui, mas requerem drivers especiais para serem instalados.

É claro que tudo isso não ajuda se você estiver reproduzindo um vídeo em sua máquina host. Neste caso, o VNC terá que re-codificar ~ 30 imagens em tela cheia por segundo e enviá-las via rede. Na maioria das compressões que podem ser realizadas em tempo real pelos processadores atuais, esse fluxo levaria > 8 Mbps de largura de banda. Por isso, é inadequado para a maioria das conexões de Internet (especialmente pensar em conexões DSL assimétricas com velocidade de upload inferior a 1 Mbps, e sim, é a velocidade de upload que importa no lado do host).

Pode ser adequado para o uso da LAN, mas aqui provavelmente você deve pensar em configurar um servidor de mídia ou compartilhar sua mídia usando o servidor de mídia DLNA / UPnP (até mesmo o Win7 media player pode fazer isso). Em seguida, use um cliente DLNA para reproduzir a mídia compartilhada.

    
por 18.05.2011 / 16:46
2

A variante de VNC mais rápida que já usei é UltraVNC com o Driver de Espelho de Vídeo instalado. O RDP ainda é visivelmente mais rápido, mas não é tão ruim assim.

Eu também ouvi coisas realmente boas sobre o ZeroRemote , mas nunca o testei. Parece que TrueRemote é o seu sucessor.

    
por 18.05.2011 / 16:51
1

Se você está tentando assistir a vídeos em uma LAN, a solução mais rápida em termos de velocidade de desenho de tela é provavelmente Radmin .

    
por 18.05.2011 / 16:34
1

Como diz @Journeyman Geek, o VNC é ineficiente. Isso ocorre por design para que o VNC não precise "entender" o que o cliente remoto está tentando exibir.

O RDP, na verdade, funciona, por isso pode usar atalhos e renderizar imagens mais rapidamente. O RDP informa a outra extremidade, por exemplo, "o cliente abriu uma janela neste local" em vez de enviar os dados do bitmap que representam a alteração da tela.

Existem hacks de "servidor de terminal" que adicionam recursos de RDP às versões do Windows que não os apresentam, mas eu não os recomendo oficialmente e você os usa por sua conta e risco. No entanto, acho que até mesmo as versões "Starter" do Windows 7 vêm com "Assistência Remota" (msra.exe) que você pode tentar usar.

As coisas que você pode fazer para melhorar o desempenho do VNC, no entanto, incluem diminuir a profundidade da tela para 8 bits, diminuir a resolução da tela do cliente e usar o cache de bitmap do lado do cliente. Isso significa que o VNC precisa enviar menos dados na transmissão e você terá um desempenho melhor (mas não ficará bonito).

    
por 18.05.2011 / 16:39
1

Você também pode experimentar o TeamViewer, é gratuito para uso não comercial e foi bastante rápido para mim. Eu não testei em vídeo HD.

    
por 19.05.2011 / 15:37
0

Se você está procurando por desempenho, não precisa usar o VNC. Tente algo como LogMeIn . É grátis e funciona bem.

    
por 18.05.2011 / 16:33
0

Para mim, mesmo na Internet (com taxas de ping > 50 ms e banda decente > 1mbit / s), obtenho um comportamento muito bom no UltraVNC. A mágica vem com a alteração das configurações de conexão.

Depois de iniciar o visualizador, vá para "Opções de conexão", desative "Selecionar automaticamente as melhores configurações", ative "Tight" e diminua o "Jpeg" para menor qualidade, se necessário (2-4 funciona bem).

Essa é a única maneira que eu conheço de cores completas com desempenho decente. Você obterá vários fps depois, o suficiente para obter uma apresentação de slides rápida em um filme em tela cheia (suficiente para tudo o que eu estou fazendo, incluindo desenvolvimento remoto, para filmes reais assistindo muito devagar e também não há áudio).

Além disso, no servidor "Propriedades", é útil ter (se não estiver usando o driver de espelhamento que ajuda muito no desempenho) ter "Pesquisar em tela cheia", "Pesquisar janela em primeiro plano", "Pesquisar janela em cursor", "Sistema HookDll "," Precisão baixa "ativada. Basicamente, praticamente tudo à esquerda.

    
por 06.06.2014 / 09:13