Il ping transatlantico è più veloce dell'invio di un pixel sullo schermo?


808

John Carmack ha twittato ,

Posso inviare un pacchetto IP in Europa più velocemente di quanto possa inviare un pixel sullo schermo. Come va?

E se questo non fosse John Carmack, lo classificherei sotto "le interwebs sono sciocche".

Ma questo è John Carmack.

Come può essere vero?

Per evitare discussioni su cosa si intende esattamente nel tweet, questo è ciò a cui vorrei ricevere una risposta:

Quanto tempo impiega, nel migliore dei casi, a inviare un singolo pacchetto IP da un server negli Stati Uniti in qualche parte d'Europa, misurando dal momento in cui un software attiva il pacchetto, al punto che viene ricevuto da un software sopra livello del conducente?

Quanto tempo ci vuole, nel migliore dei casi, per visualizzare un pixel sullo schermo, misurato dal punto in cui un software sopra il livello del driver cambia il valore di quel pixel?


Anche supponendo che la connessione transatlantica sia il miglior cavo in fibra ottica che il denaro possa acquistare e che John sia seduto proprio accanto al suo ISP, i dati devono ancora essere codificati in un pacchetto IP, passare dalla memoria principale alla sua scheda di rete , da lì attraverso un cavo nel muro in un altro edificio, probabilmente salterà attraverso alcuni server lì (ma supponiamo che abbia solo bisogno di un singolo relè), viene fotonizzato attraverso l'oceano, convertito in un impulso elettrico da un fotosensore, e infine interpretato da un'altra scheda di rete. Fermiamoci qui.

Per quanto riguarda il pixel, questa è una semplice parola macchina che viene inviata attraverso lo slot PCI Express, scritta in un buffer, che viene quindi scaricata sullo schermo. Anche tenendo conto del fatto che i "singoli pixel" probabilmente comportano la trasmissione dell'intero buffer dello schermo al display, non vedo come questo possa essere più lento: non è come se i bit vengano trasferiti "uno per uno" - piuttosto, essi sono impulsi elettrici consecutivi che vengono trasferiti senza latenza tra di loro (giusto?).


50
O è pazzo o questa è una situazione insolita. A causa della velocità della luce nella fibra, non è possibile ottenere dati dagli Stati Uniti all'Europa in meno di circa 60 millisecondi in un modo. La tua scheda video emette un intero nuovo schermo di pixel ogni 17 millisecondi circa. Anche con il doppio buffering, puoi ancora battere il pacchetto di un bel po '.
David Schwartz,

84
@DavidSchwartz: stai pensando alla GPU in isolamento. Sì, la GPU può fare molto lavoro in meno di 60 ms. Ma John si sta lamentando per l'intera catena, che coinvolge il monitor. Sai quanta latenza è coinvolta, dai dati delle immagini vengono trasmessi al monitor e fino a quando non vengono visualizzati sullo schermo? La cifra di 17 ms è insignificante e irrilevante. Sì, la GPU prepara una nuova immagine ogni 17 ms e sì, lo schermo visualizza una nuova immagine ogni 17 ms. Ma questo non dice nulla per quanto tempo l'immagine è stata in rotta prima che fosse visualizzata
jalf

24
È un programmatore di giochi e ha detto più velocemente di quanto io possa inviare un pixel allo schermo ... quindi forse è responsabile del ritardo nel rendering della grafica 3D? Anche se dovrebbe essere abbastanza basso nella maggior parte dei videogiochi; ottimizzano per le prestazioni, non per la qualità. E, naturalmente, c'è la molto alta probabilità sta solo esagerando (lì, ho detto l'ovvio, felice?).
Bob

19
Vai a Best Buy un po 'di tempo e guarda tutti i televisori, dove li hanno tutti sintonizzati sullo stesso canale interno. Anche i set apparentemente identici avranno un notevole ritardo (forse un quarto di secondo) l'uno rispetto all'altro. Ma oltre a ciò, è necessario implementare l'intero ciclo di "disegno" all'interno dell'interfaccia utente (che può comportare il rendering di più "livelli" dell'immagine). E, naturalmente, se è richiesto il rendering 3-D o qualcosa del genere, ciò aggiunge un ritardo significativo.
Daniel R Hicks,

4
C'è molto spazio per le speculazioni in questione, non credo che ci sia una risposta perfetta a meno che tu non sappia di cosa stava davvero parlando J.Carmack. Forse il suo tweet era solo uno stupido commento su una situazione che ha incontrato.
Baarn

Risposte:


1321

Il tempo per inviare un pacchetto a un host remoto è la metà del tempo riportato dal ping, che misura un tempo di andata e ritorno.

Il display che stavo misurando era un display Sony HMZ-T1 montato sulla testa collegato a un PC.

Per misurare la latenza del display, ho un piccolo programma che si trova in un loop di spin che esegue il polling di un controller di gioco, eseguendo un clear con un colore diverso e scambiando i buffer ogni volta che viene premuto un pulsante. Ho registrato un video che mostra sia il controller di gioco che lo schermo con una fotocamera da 240 fps, quindi conto il numero di fotogrammi tra il pulsante premuto e lo schermo che inizia a mostrare un cambiamento.

Il controller di gioco si aggiorna a 250 Hz, ma non esiste un modo diretto per misurare la latenza sul percorso di input (vorrei poter ancora collegare le cose a una porta parallela e utilizzare le istruzioni Sam dentro / fuori). Come esperimento di controllo, eseguo lo stesso test su un vecchio display CRT con una traccia verticale di 170 Hz. Aero e monitor multipli possono introdurre una latenza extra, ma in condizioni ottimali di solito vedrai un cambiamento di colore a partire da un certo punto sullo schermo (vsync disabilitato) due frame da 240 Hz dopo che il pulsante si abbassa. Sembra che ci siano circa 8 ms di latenza durante l' elaborazione dell'HID USB , ma mi piacerebbe risolverlo meglio in futuro.

Non è raro vedere monitor LCD desktop che riprendono cornici 10+ 240 Hz per mostrare una modifica sullo schermo. La Sony HMZ ha una media di circa 18 fotogrammi, o 70+ millisecondi totali.

Questo era in una configurazione multimonitor, quindi un paio di frame sono colpa del guidatore.

Una certa latenza è intrinseca a una tecnologia. I pannelli LCD impiegano 4-20 millisecondi per cambiare effettivamente, a seconda della tecnologia. I display LCoS a chip singolo devono bufferizzare un fotogramma video per convertire da pixel compressi a piani di colore sequenziali. I display raster laser richiedono una certa quantità di buffering per la conversione dal ritorno raster ai modelli di scansione avanti e indietro. Un display 3D stereo con sequenza di fotogrammi sequenziale superiore o inferiore non può aggiornare metà fotogramma per metà del tempo.

I display OLED dovrebbero essere tra i migliori, come dimostrato da un eMagin Z800 , che è paragonabile a un CRT a 60 Hz in latenza, migliore di qualsiasi altro non-CRT che ho testato.

Le cattive prestazioni della Sony sono dovute alla scarsa ingegneria del software. Alcune funzioni TV, come l'interpolazione del movimento, richiedono il buffering di almeno un fotogramma e potrebbero trarne vantaggio. Altre funzionalità, come menu mobili, conversioni di formati, protezione dei contenuti e così via, potrebbero essere implementate in modo streaming, ma la via d'uscita semplice è solo il buffer tra ciascun sottosistema, che può accumulare fino a una mezza dozzina di frame in alcuni sistemi .

Questo è molto sfortunato, ma è tutto risolvibile e spero di fare affidamento sui produttori di display sulla latenza in futuro.


216
Vorrei non dover bloccare questa risposta per eccessivi commenti fuori tema. Siamo tutti contenti che John abbia fornito questa risposta, ma non abbiamo bisogno di 25 commenti che esprimano la loro gratitudine, incredulità o eccitazione. Grazie.
nhinkle

28
Il trigger USB probabilmente funziona come un dispositivo USB a bassa velocità (frame bus a 125usec) causando un ritardo minimo di 8ms (problema hardware). Forse prova una tastiera PS2 invece?
Boris,

4
@Marcus Lindblom per caccia, intendi leggere? Penso che in questo caso, come abbia raggiunto il suo numero sia importante quanto il numero: lo scetticismo riguardo al tweet non verrà affrontato citando un altro numero. Anche il contesto aiuta: è stato direttamente infastidito da questo monitor specifico con il suo software non ottimale.
Jeremy,

13
Sembra che tu stia dicendo che quando i produttori di LCD affermano di dire, un tempo di risposta di 5 ms, potrebbe essere il tempo impiegato dal pannello grezzo per cambiare, ma il monitor aggiunge un po 'più di tempo al buffering e all'elaborazione del segnale prima di guidare effettivamente il LCD. Ciò non significa che i produttori pubblicano specifiche false / fuorvianti?
psusi,


68

Alcuni monitor possono avere un ritardo di input significativo

È possibile contare su una fantastica connessione a Internet rispetto a un monitor scadente e una combinazione di schede video

fonti:

Console Gaming: The Lag Factor • Pagina 2

Quindi, a 30 FPS otteniamo prestazioni di base di otto fotogrammi / 133 ms, ma nella seconda clip in cui il gioco è sceso a 24 FPS, c'è un netto ritardo di 12 fotogrammi / 200 ms tra me che premo il grilletto e Niko che inizia l'animazione di sparare con il fucile. Sono 200 ms più il ritardo aggiuntivo dallo schermo. Ahia.

Un display può aggiungere altri 5-10 ms

Pertanto, una console può avere fino a 210 ms di ritardo

E, secondo il commento di David, il caso migliore dovrebbe essere di circa 70 ms per l'invio di un pacchetto


1
-1 Non penso che John Carmack usi un monitor o una scheda video scadenti. Si prega di fare riferimento al reclamo con fonti credibili.
Baarn

14
Scusate ma non vedo ancora che risponda davvero alla domanda. La citazione parla di "premere il grilletto" e questo implica molto più lavoro, come nell'elaborazione degli input, nel rendering delle scene, ecc., Rispetto al semplice invio di un pixel allo schermo. Inoltre, la velocità di reazione umana è relativamente scadente rispetto alle prestazioni hardware moderne. Il tempo che intercorre tra il ragazzo che pensa di aver premuto il grilletto e di averlo effettivamente premuto potrebbe essere il collo di bottiglia.
Konrad Rudolph,

2
L'articolo collegato mostra che l'autore di questa analisi ha acquistato un dispositivo speciale in grado di mostrarti esattamente quando è stato premuto il pulsante, quindi non penso che stiano solo alando i numeri.
Melikoth,

11
@KonradRudolph: la percezione è roba piuttosto strana. Ho letto un articolo qualche tempo fa su un controller sperimentale che legge gli impulsi direttamente dal midollo spinale. La gente avrebbe sentito che il computer stava agendo prima di fare clic, anche se era proprio il comando nervoso a fare clic su cui reagiva.
Zan Lynx,

11
@Zan Lynx: questo è un effetto noto. Google per "Ritardo di metà secondo Benjamin Libet". La coscienza umana richiede tempi di elaborazione significativi. Tutto ciò che pensa stia accadendo ora è effettivamente accaduto in passato. Tutti i tuoi sensi ti stanno regalando "un'esperienza multimediale integrata" di un evento di mezzo secondo fa. Inoltre, gli eventi sembrano essere "improntati sul tempo" dal cervello. Una stimolazione cerebrale diretta deve essere ritardata rispetto a una stimolazione tattile affinché il soggetto possa riferire le sensazioni come simultanee!
Kaz,

35

È molto semplice dimostrare un ritardo di input sui monitor, basta attaccare un lcd accanto a un crt e mostrare un orologio o un'animazione che riempie lo schermo e registrarlo. Uno può essere un secondo o più indietro. È qualcosa su cui i produttori di LCD si sono rafforzati da quando i giocatori, ecc. Lo hanno notato di più.

Per esempio. Video di Youtube: Test Lag di ingresso Vizio VL420M

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.