Mätning av System latency -- Nvidia Reflex

Permalänk
Medlem

Mätning av System latency -- Nvidia Reflex

Hej alla! Jag har senaste månaderna labbat en del med att testa System latency från klick till skott. När Nvidia Reflex släpptes den 17 september så blev det ett konkret case att mäta upp.

Nvidia Reflex är tänkt att minska System latency vid GPU-bound scenarios. Eller åtgärda problemet med ökad latency kanske man skulle kunna säga. Nvidia Reflex finns från och med GeForce 456.38 Game Ready Driver som släpptes 17 september och för de spel som programmerats att använda Reflex SDK, till att börja med Fortnite och Valorant. Nvidia Reflex ska vara implementerat för grafikkort från och med GeForce GTX 900 Series.

System latency mäts från musklick till att ett skott avfyras. Musklicket indikeras med en LED kopplad via en längre sladd till vänster musknapp. LEDen hängs över bildskärmen. Filmning med Samsung S7 Edge i 240 FPS.

Längre ner finns bilder med testresultat och lite mer tekniskt om testerna.

Sammanfattningsvis ser Nvidia Reflex ut att fungera som tänkt. System latency sänks rejält när Nvidia Reflex aktiveras, eller om man så vill uttrycka det återställs till den nivå där den bör vara. System latency blir alltså inte lägre jämfört med då systemet inte är GPU bound med några procent lägre GPU-belastning. Positivt är att man faktiskt får nytta av fulla GPU-kapaciteten, att det går att köra GPU-bound utan ökad System latency, och att man inte behöver finlira med grafikinställningar, FPS-limits etc för att undvika max GPU load.

Intressant är även att jämföra med Nvidias “Low Latency Mode” i läge “On” som minskar antalet “pre-rendered frames” när FPS faller under den FPS limit som satts in-game eller på annat sätt som i Nvcp eller RTSS. “Ultra”-läget har lite annan funktion, och begränsar dessutom FPS till strax under under skärmens refresh rate när G-sync och V-sync är på.

>>> Skulle testat och lagt in bild på detta, men Nvidia Reflex slutade att fungera efter kvällens uppdatering av Fortnite.
>>> Tweet från FortniteStatus här: https://twitter.com/FortniteStatus/status/1308860497668825088
>>> We’re aware NVIDIA Reflex is not properly enabled in 14.20 for available drivers and we’ll be resolving this with an update in the near future...får återkomma om detta...håhåjaja.

Nu sitter ju inte alla och trimmar grafikinställningar och sätter FPS-limiters så GPU körs på säg 90-95% för att undvika diverse konstigheter som kan uppstå vid max load, eller om man kanske upplevt högre System latency. Men att nu kunna köra GPU på max utan att tänka lika mycket på inställningarna borde vara välkommet. Så länge som det inte uppkommer andra otrevligheter pga max GPU load förstås. För de som i dagsläget kör GPU-bound intet ont anandes blir det i alla fall en välkommen sänkning av latency.

Man kan som sagt undvika att GPU belastas max är att begränsa GPU-belastningen till kanske 90% genom FPS-limiter (helst in-game) och lägre grafikinställningar. Men man vet ju ändå inte riktigt om det finns tillräckligt med kapacitet när spelet blir som mest intensivt och krävande. Nvidia Reflex lovar gott, men real-world testing återstår.

Lite bakgrund till testerna och mer om tekniken
Det har sedan en tid varit kul att försöka optimera inställningar så att det ska flyta på. Snabbt, smooth och snyggt. Läst på nätet, kollat videos m.m. För några månader sedan bestämde jag mig för att försöka mäta system latency för att kunna optimera bättre och mer objektivt och att verifiera att det som skrivs på nätet och påstås på Youtube faktiskt stämmer.
Beteendet skiljer sig såklart åt mellan olika spel, så inställningarna behöver optimeras individuellt och System latency mätas.

Mus med LED och filmning i 240 FPS med Samsung S7 Edge. Först så var det ju spännande att se hur det skulle gå att koppla en LED till musknappen, och sedan ifall det skulle duga att filma med Samsung S7’s 240 FPS slow motion. 1000 FPS kamera vore förstås proffsigt (och dyrt). Med 240 FPS är det i alla fall bara drygt 4ms mellan varje frame och genom att filma 8 skott och ta medelvärde på tiderna så borde det duga för att kunna jämföra mellan olika grafikinställningar m.m. Och ifall Samsung s7 inte skulle ge riktigt korrekta filmer så beter den sig förhoppningsvis ganska lika åt varje gång. Några jämförelser med uppmätt System latency stämmer väl överens med värden i tester på nätet.

En mus kompletterades med en blå LED i änden på en lite längre sladd så den går att hänga ovanpå bildskärmen.
LEDen lyser när mikrobrytaren för vänster musknapp är nedtryckt. När mikrobrytaren sluter så flyter ström från USB +5V → motstånd → LED → mikrobrytaren → USB 0V.

Så här kan det ut:

Samsung S7 Edge Slow Motion-läge 240 FPS.
Se exempel med ett skott.

Davinci Resolve används sedan för att räkna frames från klick till skott. Ca 8 klick per test, medelvärde för antal frames beräknas, och omvandlas till [ms].

Testerna nedan är gjorda med Fortnite, där Nvidia Reflex finns att välja för både DirectX 11 och DirectX 12. För dessa tester har DirectX 11 använts.

Testsystem 4k 60Hz
Bildskärm: 4k 60 Hz - Acer 27" H277HU - med Freesync, dock inte validerad av Nvidia.
Dator: i9-9900K Stock / RTX 2070 / Asrock Phantom Gaming Z390 ITX/AC

Testsystem 2k 144Hz
Bildskärm: 1920x1080 144Hz - AOC 24G2U
Dator: i5-7600 / GTX 1060 6GB

GPU-bound 41 FPS - Nvidia Reflex On/Off (4k 60Hz)

GPU-bound 56 FPS - Nvidia Reflex On/Off (4k 60hz) -- jämfört med icke GPU-bound med samma grafikinställningar men med något sänkt FPS med hjälp av FPS-limiter (GameUserSettings.ini)

Samma som ovan men med G-sync aktiverat. Som väntat ingen nämnbar skillnad. Nvidia Reflex är ju ett samarbete mellan spelmotor och GPU.

GPU-bound 45 FPS - Nvidia Reflex On/Off (4k 60hz) -- jämfört med icke GPU-bound med lägre grafikinställningar men med samma 45 FPS satt med FPS-limiter i (GameUserSettings.ini)

Test vid något högre FPS på en 144Hz skärm. Custom/High/Epic settings (i5-7600/GTX 1060/AOC 24G2U)

Länkar och klipp
https://www.nvidia.com/en-us/geforce/news/reflex-low-latency-...
"...the Reflex SDK will keep the latency low by not letting the work for the GPU queue up. "

https://www.nvidia.com/en-us/geforce/news/fortnite-rtx-on-ray...
"In Fortnite, we’ve worked with Epic to incorporate our NVIDIA Reflex Low Latency SDK, which helps the game engine efficiently submit rendering work to your GPU, reducing system latency and improving the responsiveness of gameplay."

"At the time of the Reflex SDK announcement, the following games plan to support NVIDIA Reflex with our next Game Ready Driver on September 17th, 2020: Fortnite, and Valorant. Additionally, the following games have announced support for NVIDIA Reflex coming soon: Apex Legends, Call of Duty: Black Ops Cold War, Call of Duty: Warzone, Cuisine Royale, Destiny 2, Enlisted, Kovaak 2.0, and Mordhau"

https://www.epicgames.com/fortnite/en-US/news/a-new-light-for...
"By integrating directly in Fortnite, Reflex Low Latency Mode aligns game engine work to complete just-in-time for rendering, eliminating the GPU render queue and reducing CPU back pressure in GPU intensive scenes."

https://devblogs.microsoft.com/directx/directx12-and-fortnite...

https://www.nvidia.com/en-us/geforce/forums/game-ready-driver...

Minor changes
Permalänk
Testpilot

Grymt jobbat! Stort tack!

Permalänk
Medlem

Intressant, det är också vad det verkar ett pålitligt sätt att mäta IRL latens.

Dock värt att nämna att senaste Geforce Experience Beta med drivrutin 456.55 kan visa latens i HUD
(visar även 99% percentile och temps/spänningar = bra!)

Med påslaget Low Latency Mode i ULTRA ligger jag mer eller mindre konstant på omkring 30ms(2070 Super), verifierat i flera timmars spelande. Det visar dock kanske inte den absoluta latensen ut från skärmen till ögat, men man kan jämföra latensen med sig själv i olika inställningar.

(det är sådana här små nice finesser som man kommer att sakna om man går över till AMD)

Permalänk
Medlem

Bra att få det i text-format, brukar titta på battle(non)sense och är inte alltid lätt att följa med.
Vet att han testade ett par spel och vissa var mer känsliga för GPU-bottleneck än andra.
Har capat BF1, gissar att det lider extremt mycket när GPUn flaskar.

https://m.imgur.com/gallery/lNUh0uV

Permalänk
Medlem

Härligt att det här börjar få mer traction. Battlenonsense är faktiskt inspirationen till Nvidia Reflex.
https://youtu.be/QzmoLJwS6eQ

Vi behöver mer testing och optimering för både internal latency men också tickrates och serversidan av det hela. Mer sånt här content till världen \o/

Permalänk
Medlem
Skrivet av the squonk:

(det är sådana här små nice finesser som man kommer att sakna om man går över till AMD)

Radeon drivisarna har implementerat en liknande funktion redan sen några månader tebax
https://www.amd.com/en/technologies/radeon-software-anti-lag

Permalänk
Medlem

Genialt enkel lösning med LED lampa på mus. Snyggt.

Permalänk
Medlem
Skrivet av Neomeow:

Radeon drivisarna har implementerat en liknande funktion redan sen några månader tebax
https://www.amd.com/en/technologies/radeon-software-anti-lag

Radeon Anti Lag är deras svar på Nvidia Ultra-Low Latency Mode, något annat än Nvidia Reflex.

Edit: För att inte bara "hävda" något så kan man se på battle(non)sense för bättre förklaring: https://youtu.be/QzmoLJwS6eQ
Radeon Anti-Lag och Nvidia Ultra-Low Latency Mode ger samma typ av resultat och lider av samma typ av problem. Det blir bättre resultat vid maximal belastning på GPU:n men förvärrar resultaten annars. Poängen med Nvidia Reflex är att få fördelen utan nackdelen.

Permalänk
Medlem

Relaterat (verifiering av Nvidias mätare + rigorös genomgång av testmetodik):

Permalänk
Medlem
Skrivet av Apothysis:

Radeon Anti Lag är deras svar på Nvidia Ultra-Low Latency Mode, något annat än Nvidia Reflex.

Edit: För att inte bara "hävda" något så kan man se på battle(non)sense för bättre förklaring: https://youtu.be/QzmoLJwS6eQ
Radeon Anti-Lag och Nvidia Ultra-Low Latency Mode ger samma typ av resultat och lider av samma typ av problem. Det blir bättre resultat vid maximal belastning på GPU:n men förvärrar resultaten annars. Poängen med Nvidia Reflex är att få fördelen utan nackdelen.

Nice, man tackar för utförlig info

Permalänk
Medlem

Antar att latency mellan musklick och att LED lyser är försumbar i detta sammanhang.

Kul test och bra genomförande!

Permalänk
Medlem
Skrivet av Joppis:

Antar att latency mellan musklick och att LED lyser är försumbar i detta sammanhang.

Kul test och bra genomförande!

Strömmen rör sig nära nog ljusets hastighet så ja, det blir nog ganska försumbart .

Jävligt coolt test förövrigt!

Permalänk
Rekordmedlem

Intressant, undrar när spelare börjar "kräva" lägre latenser är verkliga vapen, det tar ju faktiskt tid innan en kula lämnar pipan på ett vapen också efter att man påverkat avtryckaren, del är det ju en mekanism som ska röra sig och sedan startar en kemisk process som bygger upp tryck och flyttar ut kulan via pipan och det tar tid det också.
Gamla vapen har betydligt högre latens i verkligheten än datorvapen har men även moderna vapen har en latens.

Permalänk
Medlem
Skrivet av mrqaffe:

Intressant, undrar när spelare börjar "kräva" lägre latenser är verkliga vapen, det tar ju faktiskt tid innan en kula lämnar pipan på ett vapen också efter att man påverkat avtryckaren, del är det ju en mekanism som ska röra sig och sedan startar en kemisk process som bygger upp tryck och flyttar ut kulan via pipan och det tar tid det också.
Gamla vapen har betydligt högre latens i verkligheten än datorvapen har men även moderna vapen har en latens.

"Snabba" vapen ligger väl på 700-1000m/s utgångshastighet, en pipa är som max 100cm, blir väl under 1ms innan kulan lämnar pipan, +"flight time".
Jag vet inte hur fort själva mekanismen rör sig, men det är inte många mm en slagpinne rör sig, tryckstegring(hastighet) på "krut" var ännu värre att lista ut, det anges inte på samma sätt som sprängämnen(m/s).
Så jag tror jag ger upp att hitta det "rätta" svaret på den frågan