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...