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


808

John Carmack twittou ,

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?).


50
Ou ele é louco ou essa é uma situação incomum. Devido à velocidade da luz na fibra, você não pode obter dados dos EUA para a Europa em menos de 60 milissegundos de uma maneira. Sua placa de vídeo exibe uma nova tela inteira de pixels a cada 17 milissegundos. Mesmo com o buffer duplo, você ainda pode vencer o pacote um pouco.
David Schwartz

84
@DavidSchwartz: Você está pensando na GPU isoladamente. Sim, a GPU pode fazer muito trabalho em menos de 60ms. Mas John está reclamando de toda a cadeia, que envolve o monitor. Você sabe quanta latência está envolvida, dos dados da imagem são transmitidos para o monitor e até que sejam mostrados na tela? A figura de 17ms é sem sentido e irrelevante. Sim, a GPU prepara uma nova imagem a cada 17 ms e sim, a tela exibe uma nova imagem a cada 17 ms. Mas isso não diz nada sobre quanto tempo a imagem foi en route antes de ter sido exibido
jalf

24
Ele é um programador de jogos e disse mais rápido do que eu posso enviar um pixel para a tela ... então talvez seja o atraso da renderização de gráficos 3D? Embora isso deva ser bastante baixo na maioria dos videogames; eles otimizam o desempenho, não a qualidade. E, claro, há uma chance muito alta de ele estar apenas exagerando (lá, afirmei o óbvio, feliz?).
Bob

19
Vá para a Best Buy por algum tempo e assista a todos os aparelhos de TV, onde todos eles estão sintonizados no mesmo canal interno. Mesmo conjuntos aparentemente idênticos terão um atraso perceptível (talvez um quarto de segundo) em relação ao outro. Além disso, é necessário implementar todo o ciclo de "desenho" dentro da interface do usuário (o que pode envolver a renderização de várias "camadas" da imagem). E, é claro, se a renderização 3D ou algo parecido for necessário, isso adiciona um atraso significativo.
Daniel R Hicks

4
Há muito espaço para especulações em questão, acho que não há uma resposta perfeita, a menos que você saiba do que J.Carmack realmente estava falando. Talvez o tweet dele tenha sido apenas um comentário estúpido sobre alguma situação que ele encontrou.
Baarn

Respostas:


1321

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.


216
Eu gostaria de não ter que bloquear esta resposta por excesso de comentários fora do tópico. Estamos todos entusiasmados por John ter fornecido essa resposta, mas não precisamos de 25 comentários, todos expressando sua gratidão, descrença ou entusiasmo. Obrigado.
Nhinkle

28
Seu gatilho USB provavelmente está sendo executado como um dispositivo USB de baixa velocidade (quadros de barramento a 125usec), causando um atraso mínimo de 8ms (problema de hardware). Talvez tente um teclado PS2?
Boris

4
@ Marcus Lindblom por caçar, você quer dizer ler? Penso que, neste caso, como ele chegou ao seu número é tão importante quanto o número - o ceticismo em relação ao tweet não será abordado citando outro número. O contexto também ajuda - ele ficou mais irritado com esse monitor específico com seu software subótimo.
Jeremy

13
Parece que você está dizendo que, quando os fabricantes de LCD afirmam dizer, um tempo de resposta de 5 ms, pode levar algum tempo para que o painel bruto seja alterado, mas o monitor adiciona um pouco mais de tempo de buffer e processamento do sinal antes de realmente acionar o painel. LCD. Isso não significa que os fabricantes estão publicando especificações falsas / enganosas?
Psusi


68

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

Então, a 30FPS, obtemos um desempenho básico de oito quadros / 133ms, mas no segundo clipe em que o jogo caiu para 24FPS, há um claro intervalo de 12 quadros / 200ms entre eu apertar o gatilho e Niko iniciando a animação de tiro de espingarda. São 200ms mais o atraso adicional da sua tela. Ai.

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


1
-1 Não acho que John Carmack use um monitor ruim ou uma placa de vídeo. Consulte sua reivindicação com fontes confiáveis.
Baarn

14
Desculpe, mas ainda não vejo isso realmente respondendo à pergunta. A citação diz sobre "puxar o gatilho" e isso implica muito mais trabalho, como no processamento de entrada, na renderização de cenas etc., do que apenas enviar um pixel para a tela. Além disso, a velocidade de reação humana é relativamente ruim em comparação com o desempenho de hardware moderno. O tempo entre o cara que pensa que puxou o gatilho e realmente o puxou pode muito bem ser o gargalo.
Konrad Rudolph

2
O artigo vinculado mostra que o autor desta análise comprou um dispositivo especial que pode mostrar exatamente quando o botão foi pressionado, então não acho que eles estejam apenas alterando os números.
Melikoth

11
@KonradRudolph: Percepção é uma coisa bem estranha. Há um tempo, li um artigo sobre um controlador experimental que lê impulsos diretamente da medula espinhal. As pessoas achavam que o computador estava agindo antes de clicar, mesmo que fosse seu próprio comando nervoso clicar nele.
Zan Lynx

11
@Zan Lynx: Este é um efeito conhecido. Google para "Retardo de meio segundo de Benjamin Libet". A consciência humana requer um tempo de processamento significativo. Tudo o que pensa está acontecendo agora realmente aconteceu no passado. Todos os seus sentidos estão proporcionando uma "experiência multimídia integrada" de um evento de meio segundo atrás. Além disso, os eventos parecem ter "tempo marcado" pelo cérebro. Uma estimulação cerebral direta deve ser atrasada em relação a uma estimulação tátil para que o sujeito relate as sensações como simultâneas!
Kaz

35

É 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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.