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


John Carmack  twittou,

Eu posso enviar um pacote IP para a Europa mais rápido do que posso enviar um pixel para a tela. Como foi isso?

E se isso não fosse John Carmack, eu arquivaria sob "as interwebs sendo bobas".

Mas este é John Carmack.

Como pode isto ser verdade?

Para evitar discussões sobre o que exatamente se quer dizer no tweet, é isso que eu gostaria de receber uma resposta:

Quanto tempo leva, na melhor das hipóteses, obter um único pacote IP enviado de um servidor nos EUA para algum lugar na Europa, medindo a partir do momento em que um software aciona o pacote, a ponto de ser recebido por um software acima nível de motorista?

Quanto tempo leva, no melhor dos casos, para um pixel ser 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, passar da memória principal para sua placa de rede. de lá, através de um cabo na parede para outro prédio, provavelmente irá passar por alguns servidores lá (mas vamos supor que ele precisa apenas de um único relé), ser fotonizado através do oceano, convertido de volta em um impulso elétrico por um fotossensor, e finalmente interpretado por outra placa de rede. Vamos parar por aí

Quanto ao pixel, esta é uma palavra simples que é enviada através do slot PCI Express, escrita em um buffer, que é então liberado para a tela. Mesmo considerando o fato de que “pixels únicos” provavelmente resultam em todo o buffer de tela sendo transmitido para a tela, não vejo como isso pode ser mais lento: não é como se os bits fossem transferidos “um por um” ​​- ao contrário, são impulsos elétricos consecutivos que são transferidos sem latência entre eles (certo?).


797


origem


Ou ele é louco ou esta é uma situação incomum. Devido à velocidade da luz em fibra, não é possível obter dados dos EUA para a Europa em menos de 60 milissegundos de uma forma. Sua placa de vídeo coloca toda uma nova tela de pixels a cada 17 milissegundos, aproximadamente. Mesmo com buffer duplo, você ainda pode bater o pacote um pouco. - David Schwartz
@ 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 o quanto a latência está envolvida, a partir dos dados da imagem é transmitida para o monitor e até que seja mostrada 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 está a caminho antes de ser exibida - jalf
Ele é um programador de jogos, e ele disse mais rápido que Eu pode enviar um pixel para a tela... então talvez conta para o atraso de renderização de gráficos 3D? Embora isso deva ser bem baixo na maioria dos videogames; eles otimizam o desempenho, não a qualidade. E claro, há o muito alta chance ele está apenas exagerando (ali, afirmei o óbvio, feliz?). - Bob
Vá para a Best Buy algum tempo e assista a todos os aparelhos de TV, onde eles estão sintonizados no mesmo canal interno. Mesmo conjuntos aparentemente idênticos terão um atraso perceptível (talvez de um quarto de segundo) em relação um ao outro. Mas além disso, é necessário implementar todo o ciclo de "desenho" dentro da interface do usuário (o que pode envolver renderizar novamente várias "camadas" da imagem). E, claro, se a renderização 3-D ou algo assim for necessário, isso adiciona um atraso significativo. - Daniel R Hicks
Há muito espaço para especulação em questão, eu não acho que há uma resposta perfeita a menos que você saiba do que J.Carmack estava realmente falando. Talvez seu tweet tenha sido apenas um comentário idiota sobre alguma situação que ele encontrou. - Baarn


Respostas:


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

A tela que eu estava medindo era uma Sony HMZ-T1 monitor montado na cabeça conectado a um PC.

Para medir a latência de exibição, eu tenho um pequeno programa que fica em um loop giratório que pesquisa um controlador de jogo, fazendo uma limpeza para uma cor diferente e trocando buffers sempre que um botão é pressionado. Eu gravo vídeo mostrando o controlador de jogo ea tela com uma câmera de 240 fps, em seguida, contar o número de quadros entre o botão que está sendo pressionado e a tela começa a mostrar uma mudança.

O controlador de jogo é atualizado em 250 Hz, mas não há uma maneira direta de medir a latência no caminho de entrada (gostaria de poder conectar as coisas a uma porta paralela e usar as instruções de entrada / saída do Sam). Como um experimento de controle, eu faço o mesmo teste em uma tela CRT antiga com um retraço vertical de 170 Hz. Aero e vários monitores podem introduzir latência extra, mas sob condições ideais você normalmente verá uma mudança de cor iniciando em algum ponto da tela (vsync desativado) dois quadros de 240 Hz depois que o botão cair. Parece que há 8 ms ou mais de latência passando pelo USB HID processamento, mas gostaria de resolver isso melhor no futuro.

Não é incomum ver monitores LCD de mesa com 10 + 240 Hz para mostrar uma alteração na tela. A Sony HMZ atingiu em média 18 quadros, ou mais de 70 milissegundos.

Isso foi em uma configuração multimonitor, portanto, alguns quadros são culpa do motorista.

Alguma latência é intrínseca a uma tecnologia. Os painéis de LCD levam de 4 a 20 milissegundos para serem realmente alterados, dependendo da tecnologia. Único chip LCoS As exibições devem armazenar em buffer um quadro de vídeo para converter de pixels compactados em planos de cores seqüenciais. As exibições de varredura a laser precisam de alguma quantidade de buffer para converter de retorno de varredura para padrões de varredura de frente e para trás. Uma exibição 3D estéreo dividida sequencial em quadro ou superior não pode atualizar o quadro intermediário na metade do tempo.

OLED displays 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 CRT não testado.

O mau desempenho da Sony deve-se à má engenharia de software. Alguns recursos da TV, como a interpolação de movimento, exigem o armazenamento em 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, podem ser implementados de forma contínua, mas a saída mais fácil é apenas bufferizar entre cada subsistema, o que pode acumular meia dúzia de quadros em alguns sistemas. .

Isso é muito lamentável, mas tudo é solucionável, e espero nos apoiar mais nos fabricantes de displays sobre latência no futuro.


1305



Eu gostaria de não ter que bloquear essa resposta para comentários excessivos 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 empolgação. Obrigado. - nhinkle♦
O 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 em vez disso? - Boris
@Marcus Lindblom por caçar, você quer dizer ler? Eu acho 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 vai ser abordado, citando outro número. Além disso, o contexto ajuda - ele ficou mais diretamente irritado com esse monitor específico, com seu software sub-ótimo. - Jeremy
Parece que você está dizendo que, quando os fabricantes de LCD afirmam, um tempo de resposta de 5 ms, pode ser que o tempo gasto no painel bruto seja alterado, mas o monitor adiciona um pouco mais de buffering e processa o sinal antes de realmente direcionar o LCD Isso não significa que os fabricantes estão publicando especificações falsas / enganosas? - psusi
@psusi doubledeej.blogspot.com/2009/07/…  zdnet.com/blog/ou/…  gizmodo.com/5669331/why-most-hardware-specs-are-total-bullshit  maximumpc.com/article/features/display_myths_shattered - Dan Neely


Alguns monitores podem ter atrasos de entrada significativos

Contabilizando uma conexão de internet incrível em comparação com um monitor de baixa qualidade e uma combinação de placas de vídeo

Fontes:

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

Assim, a 30FPS obtemos um desempenho de base de oito fotogramas / 133ms, mas em   o segundo clipe onde o jogo caiu para 24FPS, há uma clara   12 quadros / 200ms de atraso entre mim puxando o gatilho, e Niko   começando a animação de disparo de espingarda. São 200ms mais   atraso adicional de sua tela. Ai

Um monitor pode adicionar outro 5-10ms

Então, 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 enviar um pacote


67



-1 Eu não acho que John Carmack use um monitor de baixa qualidade ou uma placa de vídeo. Por favor, referencie sua reivindicação com fontes confiáveis. - Baarn
Desculpe, mas eu ainda não vejo isso realmente respondendo a pergunta. A citação fala sobre "puxar o gatilho" e isso implica muito mais trabalho, como no processamento de entrada, renderização de cena 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 moderno do hardware. O tempo entre o cara pensando ele puxou o gatilho e, na verdade, puxando-o, poderia muito bem ser o gargalo. - Konrad Rudolph
O artigo vinculado mostra que o autor dessa 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 exibindo os números. - Melikoth
@KonradRudolph: Percepção é uma coisa muito estranha. Li um artigo há pouco sobre um controlador experimental que lia os impulsos diretamente da medula espinhal. As pessoas sentiam que o computador estava agindo antes de terem clicado, embora fosse o próprio comando nervoso para clicar que ele estava reagindo. - Zan Lynx
@Zan Lynx: Este é um efeito conhecido. Google para "Half Segundo Atraso 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 dando a você uma "experiência multimídia integrada" de um evento de meio segundo atrás. Além disso, os eventos parecem ser "marcados pelo tempo" pelo cérebro. Uma estimulação cerebral direta deve ser retardada em relação a uma estimulação tátil para que o sujeito relate as sensações como simultâneas! - Kaz


É muito simples demonstrar o atraso de entrada nos monitores, basta colocar um lcd ao lado de um crt e mostrar um relógio ou uma animação preenchendo a tela e gravá-la. Um pode ser um segundo ou mais para trás. É algo que os fabricantes de LCDs aumentaram desde que os gamers, etc. notaram mais.

Por exemplo. Youtube Video: teste de atraso de entrada Vizio VL420M


33