Posso enviar um pacote IP para a Europa mais rapidamente do que um pixel para a tela. Como foi isso?
E se não fosse John Carmack, eu o arquivaria sob "as interwebs sendo bobas".
Mas este é John Carmack.
Como pode isto ser verdade?
Para evitar discussões sobre o que exatamente se entende no tweet, é isso que eu gostaria de receber resposta:
Quanto tempo leva, na melhor das hipóteses, para que um único pacote IP seja enviado de um servidor nos EUA para algum lugar da Europa, medindo desde o momento em que um software aciona o pacote até o ponto em que é recebido por um software acima nível de motorista?
Quanto tempo leva, na melhor das hipóteses, para que um pixel seja exibido na tela, medido a partir do ponto em que um software acima do nível do driver altera o valor desse pixel?
Mesmo assumindo que a conexão transatlântica é o melhor cabo de fibra ótica que o dinheiro pode comprar e que John está sentado ao lado de seu ISP, os dados ainda precisam ser codificados em um pacote IP, da memória principal para sua placa de rede , de lá através de um cabo na parede para outro prédio, provavelmente passará por alguns servidores (mas vamos supor que ele precise apenas de um único relé), seja fotonizado através do oceano, convertido novamente em impulso elétrico por um fotossensor, e finalmente interpretado por outra placa de rede. Vamos parar por aí.
Quanto ao pixel, esta é uma palavra de máquina simples que é enviada pelo slot PCI Express, gravada em um buffer, que é liberada na tela. Mesmo considerando o fato de que "pixels únicos" provavelmente resultam na transmissão do buffer da tela inteira para a tela, não vejo como isso pode ser mais lento: não é como se os bits fossem transferidos "um por um" - em vez disso, eles são impulsos elétricos consecutivos que são transferidos sem latência entre eles (certo?).
fonte
Respostas:
O tempo para enviar um pacote para um host remoto é metade do tempo relatado pelo ping, que mede um tempo de ida e volta.
O monitor que eu estava medindo era um monitor montado na cabeça da Sony HMZ-T1 conectado a um PC.
Para medir a latência da tela, eu tenho um pequeno programa que fica em um loop de rotação pesquisando um controlador de jogo, limpando uma cor diferente e trocando buffers sempre que um botão é pressionado. Faço um registro de vídeo mostrando o controle do jogo e a tela com uma câmera de 240 fps, depois conto o número de quadros entre o botão pressionado e a tela começando a mostrar uma alteração.
O controlador do jogo é atualizado em 250 Hz, mas não há uma maneira direta de medir a latência no caminho de entrada (eu gostaria de poder conectar as coisas a uma porta paralela e usar as instruções Sam / in / out). Como um experimento de controle, eu faço o mesmo teste em um monitor CRT antigo com um retraço vertical de 170 Hz. Aero e vários monitores podem introduzir latência extra, mas em condições ideais, normalmente você verá uma mudança de cor começando em algum ponto da tela (vsync desativado) dois quadros de 240 Hz depois que o botão for pressionado. Parece que há cerca de 8 ms de latência no processamento do USB HID , mas eu gostaria de resolver isso melhor no futuro.
Não é incomum ver os monitores LCD de mesa tirar quadros de 10+ 240 Hz para mostrar uma alteração na tela. A Sony HMZ teve uma média de 18 quadros, ou mais de 70 milissegundos.
Isso estava em uma configuração de multimonitor, então alguns quadros são culpa do motorista.
Alguma latência é intrínseca a uma tecnologia. Os painéis LCD demoram de 4 a 20 milissegundos para mudar, dependendo da tecnologia. Os monitores LCoS de chip único devem armazenar em buffer um quadro de vídeo para converter pixels compactados em planos de cores seqüenciais. As telas de varredura a laser precisam de uma certa quantidade de buffer para converter do retorno da varredura para os padrões de varredura para frente e para trás. Uma tela 3D estéreo dividida na parte superior ou inferior do quadro não pode atualizar o meio do quadro na metade do tempo.
Os monitores OLED devem estar entre os melhores, como demonstrado por um eMagin Z800 , que é comparável a um CRT de 60 Hz em latência, melhor do que qualquer outro teste que não seja o CRT I.
O mau desempenho na Sony é devido à má engenharia de software. Alguns recursos da TV, como interpolação de movimento, exigem buffer de pelo menos um quadro e podem se beneficiar de mais. Outros recursos, como menus flutuantes, conversões de formato, proteção de conteúdo etc., podem ser implementados de maneira streaming, mas a saída mais fácil é apenas armazenar buffer entre cada subsistema, o que pode acumular meia dúzia de quadros em alguns sistemas .
Isso é muito lamentável, mas é tudo corrigível e espero contar com os fabricantes de telas mais sobre latência no futuro.
fonte
Alguns monitores podem ter um atraso de entrada significativo
Contabilizando uma conexão de internet incrível em comparação com um monitor de baixa qualidade e uma placa de vídeo, é possível
Fontes:
Jogos de console: o fator de atraso • Página 2
Um monitor pode adicionar outros 5 a 10 ms
Assim, um console pode ter até 210ms de atraso
E, de acordo com o comentário de David, o melhor caso deve ser de cerca de 70ms para o envio de um pacote
fonte
É muito simples demonstrar o atraso de entrada nos monitores, basta colocar um lcd ao lado de uma tela e mostrar um relógio ou uma animação preenchendo a tela e gravá-la. Pode-se ficar um segundo ou mais para trás. É algo que os fabricantes de LCD reforçam desde que os jogadores etc. notaram mais.
Por exemplo. Vídeo do YouTube: Teste de atraso de entrada Vizio VL420M
fonte