Transatlantycki ping szybszy niż wysłanie piksela na ekran?


809

John Carmack napisał na Twitterze ,

Mogę wysłać pakiet IP do Europy szybciej niż mogę wysłać piksel na ekran. Jak leci?

A gdyby to nie był John Carmack, zapisałbym to jako „głupie interweny”.

Ale to jest John Carmack.

Jak to może być prawda?

Aby uniknąć dyskusji na temat tego, co dokładnie oznacza w tweecie, chciałbym uzyskać odpowiedź:

Ile czasu zajmuje, w najlepszym przypadku, przesłanie pojedynczego pakietu IP z serwera w USA do jakiegoś miejsca w Europie, mierząc od momentu uruchomienia pakietu przez oprogramowanie, aż do momentu otrzymania go przez oprogramowanie powyżej poziom kierowcy?

Ile czasu zajmuje w najlepszym przypadku wyświetlenie piksela na ekranie, mierzone od momentu, w którym oprogramowanie powyżej poziomu sterownika zmienia wartość tego piksela?


Nawet zakładając, że połączenie transatlantyckie jest najlepszym kablem światłowodowym, jaki można kupić za pieniądze, i że John siedzi tuż obok swojego dostawcy usług internetowych, dane nadal muszą być zakodowane w pakiecie IP, dostać się z pamięci głównej na kartę sieciową , stamtąd przez kabel w ścianie do innego budynku, prawdopodobnie przeskoczy tam kilka serwerów (załóżmy, że potrzebuje tylko jednego przekaźnika), zostanie fotonizowany przez ocean, przekształcony z powrotem w impuls elektryczny przez fotosensor, i ostatecznie zinterpretowana przez inną kartę sieciową. Zatrzymajmy się tam.

Jeśli chodzi o piksel, jest to proste słowo maszynowe, które jest przesyłane przez gniazdo PCI Express, zapisywane w buforze, a następnie spuszczane na ekran. Nawet biorąc pod uwagę fakt, że „pojedyncze piksele” prawdopodobnie powodują przesłanie bufora całego ekranu na ekran, nie rozumiem, jak to może być wolniejsze: to nie tak, że bity są przesyłane „jeden po drugim” - raczej one to kolejne impulsy elektryczne, które są przekazywane bez opóźnień między nimi (prawda?).


50
Albo jest szalony, albo to niezwykła sytuacja. Ze względu na prędkość światła we włóknie nie można uzyskać danych ze Stanów Zjednoczonych do Europy w mniej niż około 60 milisekund w jedną stronę. Twoja karta wideo wyświetla zupełnie nowy ekran pikseli co około 17 milisekund. Nawet przy podwójnym buforowaniu wciąż możesz sporo pokonać pakiet.
David Schwartz

84
@DavidSchwartz: Myślisz o GPU w izolacji. Tak, GPU może wykonać całą pracę w mniej niż 60 ms. Ale John narzeka na cały łańcuch, który obejmuje monitor. Czy wiesz, jakie opóźnienie wiąże się z przesłaniem danych obrazu do monitora i dopóki nie zostanie wyświetlone na ekranie? Wartość 17 ms jest bez znaczenia i nie ma znaczenia. Tak, GPU przygotowuje nowy obraz co 17 ms, i tak, ekran wyświetla nowy obraz co 17 ms. Ale to nic nie mówi o tym, jak długo obraz został trasie zanim została wyświetlona
jalf

24
Jest programistą gier i powiedział, że szybciej niż mogę wysłać piksel na ekran ... więc może uwzględnić opóźnienie renderowania grafiki 3D? Chociaż powinno to być dość niskie w większości gier wideo; optymalizują pod kątem wydajności, a nie jakości. I oczywiście istnieje bardzo duża szansa, że ​​on po prostu przesadza (tam, powiedziałem oczywiste, szczęśliwy?).
Bob

19
Idź do Best Buy i obejrzyj wszystkie telewizory, na których wszystkie mają ustawiony ten sam kanał wewnętrzny. Nawet pozornie identyczne zestawy będą miały zauważalne (być może ćwierć sekundy) opóźnienie względem siebie. Ale poza tym trzeba wdrożyć cały cykl „rysowania” w interfejsie użytkownika (co może obejmować ponowne renderowanie kilku „warstw” obrazu). I oczywiście, jeśli wymagane jest renderowanie 3D lub niektóre takie, co powoduje znaczne opóźnienie.
Daniel R Hicks

4
Jest dużo miejsca na spekulacje, o których mowa, nie sądzę, że istnieje idealna odpowiedź, chyba że wiesz, o czym tak naprawdę mówił J.Carmack. Może jego tweet był tylko głupim komentarzem na temat jakiejś napotkanej sytuacji.
Baarn

Odpowiedzi:


1321

Czas wysłania pakietu do zdalnego hosta to połowa czasu zgłoszonego przez ping, który mierzy czas podróży w obie strony.

Wyświetlacz, który mierzyłem, był wyświetlaczem Sony HMZ-T1 podłączonym do komputera.

Aby zmierzyć opóźnienie wyświetlania, mam mały program, który siedzi w pętli spinowej odpytując kontroler gier, wykonując czyszczenie do innego koloru i zamieniając bufory po każdym naciśnięciu przycisku. Nagrywam wideo pokazujące zarówno kontroler gier, jak i ekran z kamerą 240 kl./s, a następnie zliczam liczbę klatek między naciśnięciem przycisku a ekranem zaczynającym pokazywać zmianę.

Kontroler gry aktualizuje się przy 250 Hz, ale nie ma bezpośredniego sposobu pomiaru opóźnienia na ścieżce wejściowej (szkoda, że ​​nie mógłbym jeszcze podłączyć przewodów do portu równoległego i użyć instrukcji Sama we / wy). Jako eksperyment kontrolny wykonuję ten sam test na starym wyświetlaczu CRT z pionowym zejściem 170 Hz. Aero i wiele monitorów może wprowadzić dodatkowe opóźnienie, ale w optymalnych warunkach zazwyczaj zobaczysz zmianę koloru, zaczynającą się w pewnym momencie na ekranie (vsync wyłączone) dwie ramki 240 Hz po zwolnieniu przycisku. Wygląda na to, że przetwarzanie USB HID trwa około 8 ms , ale chciałbym to lepiej poprawić w przyszłości.

Często zdarza się, że stacjonarne monitory LCD zajmują 10+ 240 Hz klatek, aby pokazać zmianę na ekranie. Sony HMZ uśredniał około 18 klatek, czyli ponad 70 milisekund.

Było to w konfiguracji z wieloma monitorami, więc kilka ramek jest winą kierowcy.

Pewne opóźnienia są nierozerwalnie związane z technologią. Rzeczywista zmiana paneli LCD zajmuje 4-20 milisekund, w zależności od technologii. Single Chip LCOS wyświetla musi buforować jedną klatkę wideo przekonwertować z upakowanych pikseli sekwencyjnej płaszczyzn barwnych. Laserowe wyświetlacze rastrowe wymagają pewnej ilości buforowania w celu konwersji ze wzorów rastrowych na wzorce skanowania w przód iw tył. Wyświetlacz stereo sekwencyjny klatek lub podzielony u góry u dołu ekranu 3D nie może zaktualizować połowy klatki o połowę czasu.

Wyświetlacze OLED powinny być jednymi z najlepszych, jak wykazał eMagin Z800 , który jest porównywalny z opóźnieniem CRT 60 Hz, lepiej niż jakikolwiek inny testowany inny niż CRT I.

Zła wydajność Sony wynika z kiepskiej inżynierii oprogramowania. Niektóre funkcje telewizora, takie jak interpolacja ruchu, wymagają buforowania co najmniej jednej klatki i mogą korzystać z większej liczby. Inne funkcje, takie jak pływające menu, konwersje formatów, ochrona zawartości itp., Mogą być zaimplementowane w sposób strumieniowy, ale najłatwiejszym rozwiązaniem jest po prostu buforowanie między każdym podsystemem, który może układać do pół tuzina ramek w niektórych systemach .

Jest to bardzo niefortunne, ale wszystko można naprawić i mam nadzieję, że w przyszłości oprę się na producentach wyświetlaczy o opóźnieniu.


215
Nie chciałbym blokować tej odpowiedzi za nadmierne komentarze nie na temat. Wszyscy jesteśmy podekscytowani, że John udzielił tej odpowiedzi, ale nie potrzebujemy 25 komentarzy wyrażających ich wdzięczność, niedowierzanie lub podekscytowanie. Dziękuję Ci.
nhinkle

28
Twój wyzwalacz USB działa prawdopodobnie jako urządzenie USB o niskiej prędkości (ramki magistrali przy 125usec), powodując minimalne opóźnienie 8 ms (problem sprzętowy). Może zamiast tego wypróbuj klawiaturę PS2?
Boris

4
@Marcus Lindblom przez polowanie, masz na myśli czytanie? Myślę, że w tym przypadku sposób , w jaki osiągnął swój numer, jest tak samo ważny jak numer - sceptycyzm wobec tweetu nie zostanie rozwiązany poprzez przytoczenie innego numeru. Pomaga też kontekst - najbardziej denerwował go ten konkretny monitor z jego nieoptymalnym oprogramowaniem.
Jeremy

13
Wygląda na to, że mówisz, że gdy producenci LCD twierdzą, że powiedzą, czas reakcji 5 ms, może to być czas, który zajmuje surowy panel do zmiany, ale monitor dodaje znacznie więcej czasu buforowania i przetwarzania sygnału, zanim faktycznie napędza LCD. Czy to nie znaczy, że producenci publikują fałszywe / wprowadzające w błąd specyfikacje?
psusi


68

Niektóre monitory mogą mieć znaczne opóźnienie wejściowe

Możliwe jest połączenie niesamowitego połączenia internetowego w porównaniu z kiepskim zestawem monitorów i kart graficznych

Źródła:

Gry konsolowe: Współczynnik opóźnienia • Strona 2

Tak więc przy 30 klatkach na sekundę uzyskujemy wyjściową wydajność ośmiu klatek / 133 ms, ale w drugim klipie, w którym gra spadła do 24 klatek na sekundę, występuje wyraźne opóźnienie 12 klatek / 200 ms między tym, że pociągam za spust, a Niko rozpoczyna animację strzelania. To 200 ms plus dodatkowe opóźnienie z ekranu. Ojej.

Wyświetlacz może dodać kolejne 5-10 ms

Konsola może mieć opóźnienie do 210 ms

I, zgodnie z komentarzem Davida, najlepszym przypadkiem powinno być około 70 ms na wysłanie pakietu


1
-1 Nie sądzę, że John Carmack używa kiepskiego monitora lub karty graficznej. Prosimy o odniesienie się do roszczenia z wiarygodnych źródeł.
Baarn

14
Przepraszam, ale nadal nie widzę tak naprawdę odpowiadającej na pytanie. Cytat mówi o „pociągnięciu za spust”, a to oznacza o wiele więcej pracy, np. W przetwarzaniu danych wejściowych, renderowaniu scen itp., Niż tylko wysłanie piksela na ekran. Szybkość reakcji człowieka jest stosunkowo kiepska w porównaniu z wydajnością współczesnego sprzętu. Czas między facetem, który myśli, że nacisnął spust, a faktycznym pociągnięciem, może być wąskim gardłem.
Konrad Rudolph

2
Powiązany artykuł pokazuje, że autor tej analizy zakupił specjalne urządzenie, które może pokazać dokładnie, kiedy przycisk został naciśnięty, więc nie sądzę, aby po prostu podskakiwały liczby.
Melikoth

11
@KonradRudolph: Percepcja jest dość dziwna. Czytałem jakiś czas temu artykuł o eksperymentalnym kontrolerze, który odczytuje impulsy bezpośrednio z rdzenia kręgowego. Ludzie czuliby, że komputer działał, zanim kliknęli, mimo że ich własnym nerwem było kliknięcie, na które reagował.
Zan Lynx

11
@Zan Lynx: To znany efekt. Google za „Pół sekundy opóźnienia Benjamina Libeta”. Ludzka świadomość wymaga znacznego czasu przetwarzania. Wszystko, co się teraz dzieje, wydarzyło się w przeszłości. Wszystkie zmysły dają „zintegrowane doświadczenie multimedialne” wydarzenia sprzed pół sekundy temu. Co więcej, zdaje się, że mózg „oznaczył czas”. Bezpośrednia stymulacja mózgu musi być opóźniona w stosunku do stymulacji dotykowej, aby pacjent mógł zgłosić odczucia jako jednoczesne!
Kaz

35

Bardzo łatwo jest zademonstrować opóźnienie wejścia na monitorach, po prostu przykleić ekran LCD do crt i pokazać zegar lub animację wypełniającą ekran i nagrać go. Można być drugim lub więcej z tyłu. Jest to coś, na co producenci LCD zaostrzyli, odkąd gracze itp. Zauważyli to bardziej.

Na przykład. Youtube Video: Input Lag Test Vizio VL420M

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.