2012-05-01 09:30:45 +0000 2012-05-01 09:30:45 +0000
818
818

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

John Carmack ](https://twitter.com/ID_AA_Carmack) tweeted ,

Posso mandare un pacchetto IP in Europa più velocemente di quanto possa mandare un pixel sullo schermo. Ma quanto è assurdo?

E se questo non fosse John Carmack, lo archivierei sotto “l'interweb che fa lo stupido”.

Ma questo è John Carmack.

*Come può essere vero? *

Per evitare discussioni su ciò che si intende esattamente nel tweet, questo è ciò che vorrei ottenere come risposta:

*Quanto tempo ci vuole, nel migliore dei casi, per ottenere un singolo pacchetto IP inviato da un server negli Stati Uniti a qualche parte in Europa, misurando dal momento in cui un software innesca il pacchetto, al punto in cui viene ricevuto da un software a livello di driver? *

*Quanto tempo impiega, nel migliore dei casi, un pixel per essere visualizzato 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 a fibre ottiche che il denaro possa comprare, 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 bisogno di un solo relè), viene fotonizzato attraverso l'oceano, riconvertito 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 poi 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 è che i bit siano trasferiti “uno per uno” - piuttosto, sono impulsi elettrici consecutivi che vengono trasferiti senza latenza tra loro (giusto?).

Risposte (3)

1339
1339
1339
2012-05-01 14:24:00 +0000

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 Sony HMZ-T1 head mounted display collegato a un PC.

Per misurare la latenza del display, ho un piccolo programma che sta in un ciclo di rotazione che interroga un controller di gioco, facendo un clear a un colore diverso e scambiando i buffer ogni volta che viene premuto un pulsante. Registro un video che mostra sia il controller di gioco che lo schermo con una telecamera a 240 fps, poi 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 c'è un modo diretto per misurare la latenza sul percorso di input (vorrei poter ancora cablare le cose su una porta parallela e usare le istruzioni in/out Sam). Come esperimento di controllo, faccio lo stesso test su un vecchio display CRT con un ritracciamento verticale di 170 Hz. Aero e i monitor multipli possono introdurre una latenza extra, ma in condizioni ottimali di solito si vede un cambiamento di colore che inizia in qualche punto dello schermo (vsync disabilitato) due frame da 240 Hz dopo che il pulsante scende. Sembra che ci siano circa 8 ms di latenza che passano attraverso l'elaborazione USB HID , ma vorrei inchiodarlo meglio in futuro.

Non è raro vedere i monitor LCD desktop impiegare 10+ 240 Hz frames per mostrare un cambiamento sullo schermo. Il Sony HMZ ha avuto una media di circa 18 fotogrammi, o più di 70 millisecondi totali.

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

Alcune latenze sono intrinseche alla tecnologia. I pannelli LCD impiegano 4-20 millisecondi per cambiare effettivamente, a seconda della tecnologia. I display a singolo chip LCoS devono bufferizzare un fotogramma video per convertire da pixel impacchettati a piani di colore sequenziali. I display raster laser hanno bisogno di una certa quantità di buffering per convertire dal ritorno raster a modelli di scansione avanti e indietro. Un display 3D stereo frame-sequenziale o top-bottom split non può aggiornare a metà frame 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, meglio di qualsiasi altro non-CRT che ho provato.

Le cattive prestazioni del Sony sono dovute alla cattiva ingegneria del software. Alcune caratteristiche della TV, come l'interpolazione del movimento, richiedono il buffering di almeno un fotogramma, e possono beneficiare di più. Altre caratteristiche, come i menu fluttuanti, le conversioni di formato, la protezione dei contenuti, e così via, potrebbero essere implementate in un modo di streaming, ma la via più facile è semplicemente il buffer tra ogni sottosistema, che può accumulare fino a una mezza dozzina di fotogrammi in alcuni sistemi.

Questo è molto spiacevole, ma è tutto risolvibile, e spero di spingere i produttori di display più sulla latenza in futuro.

69
69
69
2012-05-01 10:26:17 +0000

Alcuni monitor possono avere un input lag significativo

Tenendo conto di una connessione internet fantastica rispetto a una combinazione di monitor e scheda video di merda, è possibile

Fonti: Console Gaming: The Lag Factor - Page 2

Quindi, a 30FPS otteniamo una performance di base di otto fotogrammi/133ms, ma nella seconda clip dove il gioco è sceso a 24FPS, c'è un chiaro ritardo di 12 fotogrammi/200ms tra me che premo il grilletto, e Niko che inizia l'animazione di sparo del fucile. Sono 200ms più il ritardo aggiuntivo dal vostro schermo. Ahi.

Uno schermo può aggiungere altri 5-10ms

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

E, come da commento di David, il caso migliore dovrebbe essere circa 70ms per inviare un pacchetto

37
37
37
2012-05-03 10:31:24 +0000

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

Es. Youtube Video: Input Lag Test Vizio VL420M