Ping transatlântico mais rápido do que enviar um pixel para a tela?

Ping transatlântico mais rápido do que enviar um pixel para a tela?

John Carmac twittou,

Posso enviar um pacote IP para a Europa mais rápido do que enviar um pixel para a tela. Quão fodido é isso?

E se não fosse John Carmack, eu arquivaria na categoria “as interwebs são bobas”.

Mas este é John Carmack.

Como pode isto ser verdade?

Para evitar discussões sobre o que exatamente significa o tweet, isto é o que eu gostaria que fosse respondido:

Quanto tempo leva, na melhor das hipóteses, para que um único pacote IP seja enviado de um servidor nos EUA para algum lugar na Europa, medindo desde o momento em que um software aciona o pacote até o ponto em que ele é 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 ligação transatlântica é o melhor cabo de fibra óptica que o dinheiro pode comprar, e que John está sentado ao lado do seu ISP, os dados ainda têm de ser codificados num pacote IP, passar da memória principal para a sua placa de rede. , de lá através de um cabo na parede até outro prédio, provavelmente passará por alguns servidores lá (mas vamos supor que ele só precise de um único relé), será 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 através do slot PCI Express, gravada em um buffer, que é então liberado na tela. Mesmo levando em conta o fato de que “pixels únicos” provavelmente resultam na transmissão de todo o buffer da tela 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?).

Responder1

O tempo para enviar um pacote a um host remoto é metade do tempo relatado pelo ping, que mede o tempo de ida e volta.

O display que eu estava medindo era umSony HMZ-T1monitor tipo head-mounted conectado a um PC.

Para medir a latência de exibição, tenho um pequeno programa que fica em um loop giratório pesquisando um controlador de jogo, limpando uma cor diferente e trocando buffers sempre que um botão é pressionado. Eu gravo um vídeo mostrando o controle do jogo e a tela com uma câmera de 240 fps, depois conto o número de frames entre o botão ser pressionado e a tela começar a mostrar uma mudança.

O controlador de jogo é atualizado a 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 instruções Sam de entrada/saída). Como experimento de controle, faço o mesmo teste em um antigo monitor CRT com retraço vertical de 170 Hz. Aero e vários monitores podem introduzir latência extra, mas em condições ideais você geralmente verá uma mudança de cor começando em algum ponto da tela (vsync desativado) dois quadros de 240 Hz após o botão ser pressionado. Parece que há cerca de 8 ms de latência passando peloUSB ESCONDIDOprocessamento, mas gostaria de esclarecer melhor isso no futuro.

Não é incomum ver monitores LCD de desktop capturarem quadros de 10+ 240 Hz para mostrar uma alteração na tela. O Sony HMZ teve uma média de 18 quadros, ou mais de 70 milissegundos no total.

Isso ocorreu em uma configuração de multimonitor, portanto, alguns quadros são culpa do driver.

Alguma latência é intrínseca a uma tecnologia. Os painéis LCD levam de 4 a 20 milissegundos para realmente mudarem, dependendo da tecnologia. Chip únicoLCoSos monitores devem armazenar em buffer um quadro de vídeo para converter pixels compactados em planos de cores sequenciais. Os monitores raster a laser precisam de alguma quantidade de buffer para converter de retorno raster para padrões de varredura de ida e volta. Uma tela 3D estéreo dividida sequencial de quadros ou de cima para baixo não pode atualizar o quadro intermediário na metade do tempo.

OLEDmonitores devem estar entre os melhores, como demonstrado por umeMagin Z800, que é comparável a um CRT de 60 Hz em latência, melhor do que qualquer outro não CRT que testei.

O mau desempenho da Sony se deve à má engenharia de software. Alguns recursos de 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 e assim por diante, poderiam ser implementados em streaming, mas a saída mais fácil é apenas armazenar em buffer entre cada subsistema, o que pode acumular até meia dúzia de quadros em alguns sistemas. .

Isso é muito lamentável, mas tudo pode ser corrigido e espero contar mais com os fabricantes de monitores sobre a latência no futuro.

Responder2

Alguns monitores podem ter atraso de entrada significativo

É possível contabilizar uma conexão incrível com a Internet em comparação com uma combinação ruim de monitor e placa de vídeo

Fontes:

Jogos de console: o fator de atraso • Página 2

Então, a 30FPS obtemos um desempenho básico de oito frames/133ms, mas no segundo clipe onde o jogo caiu para 24FPS, há um claro atraso de 12 frames/200ms entre eu puxar o gatilho e Niko iniciar a animação de disparo da espingarda. São 200 ms mais o atraso adicional da tela. Ai.

Um display pode adicionar mais 5 a 10 ms

Então, um console pode ter até 210ms de lag

E, de acordo com o comentário de David, o melhor caso deveria ser cerca de 70ms para enviar um pacote

Responder3

É muito simples demonstrar o input lag em monitores, basta colar um lcd próximo a um crt e mostrar um relógio ou uma animação preenchendo a tela e gravar. Pode-se estar um segundo ou mais atrás. É algo que os fabricantes de LCD têm reforçado desde que os jogadores, etc., notaram mais.

Por exemplo.Vídeo do Youtube: Teste de atraso de entrada Vizio VL420M

informação relacionada