¿Ping transatlántico más rápido que enviar un píxel a la pantalla?


808

John Carmack tuiteó :

Puedo enviar un paquete IP a Europa más rápido de lo que puedo enviar un píxel a la pantalla. ¿Qué tal está eso?

Y si no fuera John Carmack, lo archivaría bajo "las interwebs son tontas".

Pero este es John Carmack.

¿Cómo puede ser esto cierto?

Para evitar discusiones sobre qué se entiende exactamente en el tweet, esto es lo que me gustaría recibir respuesta:

¿Cuánto tiempo lleva, en el mejor de los casos, enviar un único paquete IP desde un servidor en los EE. UU. A algún lugar de Europa, midiendo desde el momento en que un software dispara el paquete hasta el punto en que lo recibe un software anterior? nivel del conductor?

¿Cuánto tiempo lleva, en el mejor de los casos, que se muestre un píxel en la pantalla, medido desde el punto en que un software por encima del nivel del controlador cambia el valor de ese píxel?


Incluso suponiendo que la conexión transatlántica es el mejor cable de fibra óptica que el dinero puede comprar, y que John está sentado justo al lado de su ISP, los datos aún deben codificarse en un paquete IP, pasar de la memoria principal a su tarjeta de red , desde allí a través de un cable en la pared hacia otro edificio, probablemente salte a través de algunos servidores allí (pero supongamos que solo necesita un solo relé), se fotoniza a través del océano, se convierte nuevamente en un impulso eléctrico por un fotosensor, y finalmente interpretado por otra tarjeta de red. Paremos ahí.

En cuanto al píxel, esta es una palabra de máquina simple que se envía a través de la ranura PCI express, escrita en un búfer, que luego se vacía en la pantalla. Incluso teniendo en cuenta el hecho de que "píxeles individuales" probablemente den como resultado que se transmita todo el búfer de la pantalla a la pantalla, no veo cómo esto puede ser más lento: no es como si los bits se transfirieran "uno por uno", sino que son impulsos eléctricos consecutivos que se transfieren sin latencia entre ellos (¿verdad?).


50
O está loco o esta es una situación inusual. Debido a la velocidad de la luz en fibra, no puede obtener datos de los EE. UU. A Europa en menos de aproximadamente 60 milisegundos por trayecto. Su tarjeta de video presenta una pantalla completamente nueva de píxeles cada 17 milisegundos más o menos. Incluso con doble almacenamiento en búfer, aún puede superar el paquete bastante.
David Schwartz

84
@DavidSchwartz: Estás pensando en la GPU de forma aislada. Sí, la GPU puede hacer mucho trabajo en menos de 60 ms. Pero John se queja de toda la cadena, que involucra al monitor. ¿Sabe cuánta latencia está involucrada, desde que los datos de la imagen se transmiten al monitor y hasta que se muestran en la pantalla? La cifra de 17 ms no tiene sentido y es irrelevante. Sí, la GPU prepara una nueva imagen cada 17 ms, y sí, la pantalla muestra una nueva imagen cada 17 ms. Pero eso no dice nada acerca de cuánto tiempo la imagen ha sido en el camino antes de que se muestre
JALF

24
Es un programador de juegos, y dijo más rápido de lo que puedo enviar un píxel a la pantalla ... así que, ¿tal vez explica el retraso en la representación de gráficos en 3D? Aunque eso debería ser bastante bajo en la mayoría de los videojuegos; Se optimizan para el rendimiento, no para la calidad. Y, por supuesto, está la muy alta probabilidad de que está exagerando (allí, he dicho lo obvio, feliz?).
Bob

19
Vaya a Best Buy algún tiempo y mire todos los televisores, donde los tienen sintonizados en el mismo canal interno. Incluso los conjuntos aparentemente idénticos tendrán un retraso notable (quizás un cuarto de segundo) entre sí. Pero más allá de eso hay que implementar todo el ciclo de "dibujar" dentro de la interfaz de usuario (que puede implicar volver a representar varias "capas" de la imagen). Y, por supuesto, si se requiere renderizado 3D o algo similar, eso agrega un retraso significativo.
Daniel R Hicks,

44
Hay mucho espacio para la especulación en cuestión, no creo que haya una respuesta perfecta a menos que sepa de lo que realmente estaba hablando J. Carmack. Tal vez su tweet fue solo un comentario estúpido sobre alguna situación que encontró.
Baarn

Respuestas:


1321

El tiempo para enviar un paquete a un host remoto es la mitad del tiempo informado por ping, que mide un tiempo de ida y vuelta.

La pantalla que estaba midiendo era una pantalla montada en la cabeza Sony HMZ-T1 conectada a una PC.

Para medir la latencia de la pantalla, tengo un pequeño programa que se encuentra en un bucle de giro que sondea un controlador de juego, borra un color diferente e intercambia buffers cada vez que se presiona un botón. Grabo un video que muestra tanto el controlador del juego como la pantalla con una cámara de 240 fps, luego cuento el número de fotogramas entre el botón que se presiona y la pantalla comienza a mostrar un cambio.

El controlador del juego se actualiza a 250 Hz, pero no hay una forma directa de medir la latencia en la ruta de entrada (desearía poder conectar cosas a un puerto paralelo y usar las instrucciones de entrada / salida de Sam). Como experimento de control, hago la misma prueba en una pantalla CRT antigua con un retroceso vertical de 170 Hz. Los monitores Aero y múltiples pueden introducir latencia adicional, pero en condiciones óptimas generalmente verá un cambio de color que comienza en algún punto de la pantalla (vsync desactivado) dos cuadros de 240 Hz después de que el botón se apaga. Parece que hay 8 ms de latencia pasando por el procesamiento USB HID , pero me gustaría precisar esto mejor en el futuro.

No es raro ver que los monitores LCD de escritorio toman más de 10 cuadros de 240 Hz para mostrar un cambio en la pantalla. El Sony HMZ promedió alrededor de 18 cuadros, o más de 70 milisegundos en total.

Esto estaba en una configuración multimonitor, por lo que un par de tramas son culpa del conductor.

Alguna latencia es intrínseca a una tecnología. Los paneles LCD tardan entre 4 y 20 milisegundos en cambiar, según la tecnología. Las pantallas LCoS de un solo chip deben almacenar un cuadro de video para convertir de píxeles empaquetados a planos de color secuenciales. Las pantallas de trama láser necesitan una cierta cantidad de almacenamiento en búfer para convertir el retorno de trama en patrones de exploración de ida y vuelta. Una pantalla 3D estéreo secuencial o superior-inferior dividida en cuadros no puede actualizar la mitad del cuadro la mitad del tiempo.

Las pantallas OLED deberían estar entre las mejores, como lo demuestra un eMagin Z800 , que es comparable a un CRT de 60 Hz en latencia, mejor que cualquier otro que no haya probado CRT.

El mal rendimiento de Sony se debe a una mala ingeniería de software. Algunas funciones de TV, como la interpolación de movimiento, requieren el almacenamiento en búfer de al menos un cuadro y pueden beneficiarse de más. Otras características, como menús flotantes, conversiones de formato, protección de contenido, etc., podrían implementarse de manera continua, pero la salida fácil es simplemente almacenar entre cada subsistema, lo que puede acumular hasta media docena de cuadros en algunos sistemas .

Esto es muy desafortunado, pero todo se puede arreglar, y espero confiar más en los fabricantes de pantallas sobre la latencia en el futuro.


216
Me gustaría no tener que bloquear esta respuesta por comentarios excesivos fuera del tema. Todos estamos encantados de que John haya proporcionado esta respuesta, pero no necesitamos 25 comentarios que expresen su gratitud, incredulidad o entusiasmo. Gracias.
nhinkle

28
Su disparador USB probablemente se esté ejecutando como un dispositivo USB de baja velocidad (cuadros de bus a 125usec) causando un retraso mínimo de 8 ms (problema de hardware). Tal vez intente un teclado PS2 en su lugar?
Boris

44
@Marcus Lindblom por cazar, ¿te refieres a leer? Creo que en este caso, cómo llegó a su número es tan importante como el número: el escepticismo con respecto al tweet no se abordará citando otro número. También ayuda el contexto: este monitor específico lo molestó más directamente con su software subóptimo.
Jeremy

13
Parece que está diciendo que cuando los fabricantes de LCD afirman, digamos, un tiempo de respuesta de 5 ms, puede ser el tiempo que toma cambiar el panel sin procesar, pero el monitor agrega un poco más de tiempo de almacenamiento en búfer y procesamiento de la señal antes de que realmente active el LCD ¿No significa eso que los fabricantes están publicando especificaciones falsas / engañosas?
psusi


68

Algunos monitores pueden tener un retraso de entrada significativo

Es posible contar con una conexión a Internet increíble en comparación con un combo de tarjeta de video y monitor de mala calidad

Fuentes:

Juegos de consola: el factor de retraso • Página 2

Entonces, a 30 FPS obtenemos un rendimiento de referencia de ocho cuadros / 133 ms, pero en el segundo clip donde el juego se redujo a 24 FPS, hay un claro retraso de 12 cuadros / 200 ms entre que apreté el gatillo y Niko comenzó la animación de disparo de escopeta. Eso es 200 ms más el retraso adicional de su pantalla. Ay.

Una pantalla puede agregar otros 5-10 ms

Por lo tanto, una consola puede tener hasta 210 ms de retraso

Y, según el comentario de David, el mejor caso debería ser de unos 70 ms para enviar un paquete


1
-1 No creo que John Carmack use un monitor o una tarjeta de video defectuosos. Consulte su reclamo con fuentes creíbles.
Baarn

14
Lo siento, pero todavía no veo que esto realmente responda la pregunta. La cita habla sobre "apretar el gatillo" y esto implica mucho más trabajo, como en el procesamiento de entrada, renderizado de escenas, etc., que simplemente enviar un píxel a la pantalla. Además, la velocidad de reacción humana es relativamente mala en comparación con el rendimiento del hardware moderno. El tiempo entre el hombre que piensa que apretó el gatillo, y en realidad lo aprieta, bien podría ser el cuello de botella.
Konrad Rudolph

2
El artículo vinculado muestra que el autor de este análisis compró un dispositivo especial que puede mostrar exactamente cuándo se presionó el botón, por lo que no creo que solo estén volando los números.
Melikoth

11
@KonradRudolph: La percepción es algo bastante extraño. Hace un tiempo leí un artículo sobre un controlador experimental que lee impulsos directamente de la médula espinal. La gente sentiría que la computadora estaba actuando antes de hacer clic, a pesar de que era su propio comando nervioso al que estaba haciendo clic para reaccionar.
Zan Lynx

11
@Zan Lynx: este es un efecto conocido. Google para "Retraso medio segundo de Benjamin Libet". La conciencia humana requiere un tiempo de procesamiento significativo. Todo lo que piensa que está sucediendo ahora realmente sucedió en el pasado. Todos sus sentidos le brindan una "experiencia multimedia integrada" de un evento de hace medio segundo. Además, los eventos parecen estar "sellados en el tiempo" por el cerebro. ¡Una estimulación cerebral directa debe retrasarse en relación con una estimulación táctil para que el sujeto informe las sensaciones como simultáneas!
Kaz

35

Es muy simple demostrar el retraso de entrada en los monitores, simplemente pegue un lcd al lado de un CRT y muestre un reloj o una animación llenando la pantalla y grábelo. Uno puede estar un segundo o más atrás. Es algo que los fabricantes de LCD han reforzado desde que los jugadores, etc., lo han notado más.

P.ej. Video de Youtube: Prueba de retraso de entrada Vizio VL420M