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

Transatlantischer Ping schneller als das Senden eines Pixels auf den Bildschirm?

John Carmack tweeted ,

Ich kann ein IP-Paket schneller nach Europa schicken, als ich ein Pixel auf den Bildschirm schicken kann. Wie bescheuert ist das denn?

Und wenn das nicht John Carmack wäre, würde ich es unter "das Internet ist dumm" ablegen.

Aber das ist John Carmack.

Wie kann das wahr sein?

Um Diskussionen darüber zu vermeiden, was genau in dem Tweet gemeint ist, würde ich gerne folgendes beantwortet bekommen:

*Wie lange dauert es im besten Fall, ein einzelnes IP-Paket von einem Server in den USA nach irgendwo in Europa zu schicken, gemessen von dem Zeitpunkt, an dem eine Software das Paket auslöst, bis zu dem Punkt, an dem es von einer Software oberhalb der Treiberebene empfangen wird? *

*Wie lange dauert es im besten Fall, bis ein Pixel auf dem Bildschirm angezeigt wird, gemessen ab dem Punkt, an dem eine Software oberhalb der Treiberebene den Wert dieses Pixels ändert? *


Selbst wenn man davon ausgeht, dass die transatlantische Verbindung das beste Glasfaserkabel ist, das man für Geld kaufen kann, und dass John direkt neben seinem ISP sitzt, müssen die Daten immer noch in ein IP-Paket kodiert werden, vom Hauptspeicher zu seiner Netzwerkkarte gelangen, von dort durch ein Kabel in der Wand in ein anderes Gebäude, hüpft dort wahrscheinlich über ein paar Server (aber nehmen wir an, dass es nur ein einziges Relais braucht), wird über den Ozean photonisiert, von einem Photosensor wieder in einen elektrischen Impuls umgewandelt und schließlich von einer anderen Netzwerkkarte interpretiert. Lassen wir es dabei bewenden.

Was das Pixel betrifft, so ist dies ein einfaches Maschinenwort, das über den PCI-Express-Slot gesendet, in einen Puffer geschrieben und dann auf den Bildschirm übertragen wird. Selbst wenn man die Tatsache berücksichtigt, dass "einzelne Pixel" wahrscheinlich dazu führen, dass der gesamte Bildschirmpuffer zum Display übertragen wird, sehe ich nicht, wie das langsamer sein kann: Es ist ja nicht so, dass die Bits "eins nach dem anderen" übertragen werden - vielmehr sind es aufeinanderfolgende elektrische Impulse, die ohne Latenz dazwischen übertragen werden (richtig?).

Antworten [3]

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

Die Zeit zum Senden eines Pakets an einen entfernten Host ist die Hälfte der Zeit, die von ping gemeldet wird, das eine Round-Trip-Zeit misst.

Das Display, das ich gemessen habe, war ein Sony HMZ-T1 Head Mounted Display, das mit einem PC verbunden war.

Um die Latenzzeit des Displays zu messen, habe ich ein kleines Programm, das in einer Schleife sitzt und einen Game-Controller abfragt, einen Clear zu einer anderen Farbe macht und die Puffer austauscht, sobald eine Taste gedrückt wird. Ich nehme ein Video auf, das sowohl den Game-Controller als auch den Bildschirm mit einer 240 fps-Kamera zeigt, und zähle dann die Anzahl der Frames zwischen dem Drücken der Taste und dem Beginn der Anzeige einer Änderung auf dem Bildschirm.

Der Gamecontroller aktualisiert sich mit 250 Hz, aber es gibt keine direkte Möglichkeit, die Latenz auf dem Eingabepfad zu messen (ich wünschte, ich könnte die Dinge noch mit einem Parallelport verkabeln und In/Out-Sam-Anweisungen verwenden). Als Kontrollexperiment führe ich denselben Test auf einem alten CRT-Bildschirm mit einem vertikalen Rücklauf von 170 Hz durch. Aero und mehrere Monitore können zusätzliche Latenz einführen, aber unter optimalen Bedingungen sieht man normalerweise einen Farbwechsel, der an irgendeinem Punkt des Bildschirms beginnt (vsync deaktiviert), zwei 240 Hz-Frames nach dem Herunterfahren der Taste. Es scheint, dass es eine Latenz von etwa 8 ms gibt, die durch die USB HID -Verarbeitung geht, aber ich würde das in Zukunft gerne besser festnageln.

Es ist nicht ungewöhnlich, dass Desktop-LCD-Monitore 10+ 240 Hz-Frames benötigen, um eine Änderung auf dem Bildschirm anzuzeigen. Der Sony HMZ benötigte im Durchschnitt etwa 18 Frames, also 70+ Millisekunden insgesamt.

Dies war in einem Multimonitor-Setup, also sind ein paar Frames die Schuld des Treibers.

Eine gewisse Latenz ist technologieimmanent. LCD-Panels brauchen je nach Technologie 4-20 Millisekunden, um sich tatsächlich zu verändern. Single-Chip LCoS -Displays müssen ein Videobild puffern, um von gepackten Pixeln in sequenzielle Farbebenen umzuwandeln. Laser-Raster-Displays benötigen eine gewisse Pufferung, um von Raster-Rückkehr zu Hin- und Her-Scan-Mustern zu konvertieren. Ein Frame-Sequential- oder Top-Bottom-Stereo-3D-Display kann die Hälfte der Zeit nicht in der Mitte des Frames aktualisieren. OLED -Displays sollten zu den allerbesten gehören, wie ein eMagin Z800 beweist, der in der Latenzzeit mit einem 60 Hz-CRT vergleichbar ist, besser als jeder andere Nicht-CRT, den ich getestet habe.

Die schlechte Leistung des Sony ist auf eine schlechte Softwareentwicklung zurückzuführen. Einige TV-Funktionen, wie z. B. die Bewegungsinterpolation, erfordern die Pufferung von mindestens einem Bild und können von mehr profitieren. Andere Funktionen, wie z. B. Floating-Menüs, Formatkonvertierungen, Inhaltsschutz und so weiter, könnten auf eine Streaming-Art implementiert werden, aber der einfache Ausweg ist, einfach zwischen jedem Subsystem zu puffern, was bei manchen Systemen bis zu einem halben Dutzend Frames anhäufen kann.

Das ist sehr bedauerlich, aber es ist alles behebbar, und ich hoffe, dass ich in Zukunft mehr Druck auf die Display-Hersteller bezüglich der Latenz ausüben kann.

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

Einige Monitore können einen signifikanten Input-Lag haben

Bei einer tollen Internetverbindung im Vergleich zu einer beschissenen Monitor- und Grafikkartenkombination ist es möglich

Quellen: Console Gaming: The Lag Factor - Page 2

Also, bei 30FPS erhalten wir eine Basisleistung von 8 Frames/133ms, aber im zweiten Clip, in dem das Spiel auf 24FPS gesunken ist, gibt es eine klare Verzögerung von 12 Frames/200ms zwischen dem Abdrücken des Abzugs und dem Beginn der Schrotgewehr-Feueranimation durch Niko. Das sind 200ms plus die zusätzliche Verzögerung von Ihrem Bildschirm. Autsch.

Ein Display kann weitere 5-10ms hinzufügen

Also kann eine Konsole bis zu 210ms Verzögerung haben

Und, wie in Davids Kommentar erwähnt, sollte der beste Fall etwa 70ms für das Senden eines Pakets sein

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

Es ist sehr einfach, die Eingabeverzögerung bei Monitoren zu demonstrieren. Halten Sie einfach einen lcd neben einen crt und zeigen Sie eine Uhr oder eine Animation, die den Bildschirm ausfüllt, und zeichnen Sie sie auf. Man kann eine Sekunde oder mehr hinterher sein. Es ist etwas, das die LCD-Hersteller verschärft haben, seit Gamer etc. es stärker bemerken.

Z.B. Youtube Video: Input Lag Test Vizio VL420M

37