Site icon HWCooling.net

AMD Frame Latency Meter: Úvod do měření latencí

Testujeme

Snímková frekvence bylo dlouho jedinou metrikou pro srovnávání výkonu ve hrách. I při plynulých snímkových frekvencích ale může být hraní nepříjemné, pokud je cítit výrazný velký input lag – hra reaguje na ovládání s citelným zpožděním. Na měření snímkových frekvencí existuje nespočet nástrojů, pro otestování odezvy bohužel ne. Představíme si specializovaný Frame Latency Meter, který nedávno nabídlo AMD.

Zatímco ve hrách pro jednoho hráče se hráči obvykle chtějí hrát s co nejvyššími grafickými detaily, v kompetitivních hrách je tomu spíš naopak. Mají k tomu více důvodů – snížením grafických detailů dosahují vyšší snímkové frekvence (FPS), s vyšší snímkovou frekvencí se snižuje latence, a nižší detaily odstraňují vizuální efekty a objekty, které není nezbytné zobrazovat, což výrazně zjednoduší scénu, takže se na lze lépe zorientovat.

Vyšší snímková frekvence znamená plynulejší animace. Změny mezi snímky jsou menší, což umožňuje hráčům lépe sledovat rychle se pohybující objekty a přesněji reagovat na změny ve scéně. Díky menším rozdílům mezi snímky jsou také pohyby postav nebo projektilů zřetelnější a jejich pohyb je předvídatelnější, což je klíčové pro to, abyste mohli přesněji zamířit, nebo se vyhnout útokům.

Nižší latence jsou důležité proto, že snižují časovou prodlevu mezi vstupem hráče (například stisknutím klávesy nebo kliknutím myší) a okamžikem, kdy se reakce hry promítne na obrazovku. Díky tomu může hráč reagovat rychleji na změny, které se na ní odehrávají a reakce hry působí přirozeněji.

Dá se to vůbec poznat?

Běžná lidská reakční doba na vizuální podněty se pohybuje mezi 200 až 250 milisekundami. U zkušených hráčů, kteří si reakce trénují, může být tato doba i o něco kratší, obvykle kolem 150-200 milisekund. Mohlo by se tedy zdát, že není tak podstatné, jestli má hra odezvu čtyřicet nebo dvacet milisekund, protože takový rozdíl není možné lidskými smysly rozpoznat.

V přirozeném prostředí je však reakce prostředí okamžitá, což je něco, co lidský mozek očekává. Každá prodleva navíc způsobí, že hráč ztrácí pocit přesné kontroly nad děním. Přestože je rozdíl mezi 40 ms a 20 ms příliš na to, abyste jej vědomě rozlišili, pro mozek představuje významný rozdíl v synchronizaci mezi vstupy a výstupy.

Dlouhá odezva ve hře se projevuje tím, že reakce postavy nebo vozidla, které ovládáte, je opožděná. To vede k pocitu, že je hra líná, nebo že ovládání plave. V praxi to znamená, že rychlé změny směru, úhyby před útokem nebo přesné míření jsou složitější a často se stává, že na dění zareagujete pozdě.

S trochou cviku se naučíte prodlevu částečně kompenzovat tím, že o něco dříve stisknete klávesu či pohnete myší, ale při rychlých změnách ve scéně roste i pravděpodobnost, že na očekávané dění nezareagujete adekvátně.

Projevuje se to třeba tak, že se za běhu netrefíte přesně do dveří, v autě začínáte zatáčet příliš brzo, anebo naopak příliš pozdě, máte problém odhadnout správný okamžik, kdy se odrazit při skoku, nebo že to při míření na cíl, který se pohybuje, létá všude kolem, jen ne do něj.

Proto byste se při optimalizaci systému i nastavení her neměli upínat jen na vysokou snímkovou frekvenci, ale pohlídat si i délku odezvy, jelikož má významný vliv na hratelnost.

Pro měření snímkové frekvence existuje spousta nástrojů. Na zobrazení aktuální snímkové frekvence v překryvném textu vám bude stačit i aplikace k ovladačům od AMD, Nvidie či Intelu. S měřením odezvy je to mnohem komplikovanější.

Základní princip je jednoduchý; stačí zaznamenat čas stisku tlačítka nebo pohybu myši a změřit, za jak dlouho se to projeví na obrazu monitoru. Dá se to i snadno změřit, pokud na to máte potřebná zařízení – vysokorychlostní kameru nebo nástroj pro měření latencí jako Nvidia LDAT či otevřený OSLTT. S těmito nástroji změříte celou odezvu od vstupu myši po zobrazení akce na monitoru – odezvu systému (system latency).

Zdroj: Nvidia.com

Odezvu lze měřit i softwarově. Do celkového času odezvy se pak nepromítne zpoždění na straně ovladače a monitoru (peripheral latency a display latency), ale lze měřit, jak dlouho trvá zpracování a vykreslení snímku v samotném počítači (PC latency).

Nvidia k tomu využívá knihovny Reflex, které jsou integrované ve hrách a jsou schopné zachytit akci myší i zjistit, kdy grafická karta dokreslila snímek. Problém je, že fungují pouze na kartách GeForce a ve hrách s integrovaným Reflexem.

Udělat univerzální aplikaci nejspíš není zcela snadné – můžete sice zachytit pohyb myši, ale už tak snadno nezjistíte, kolik času strávila hra renderingem snímku a kdy onen snímek vykreslí.

AMD přesto nedávno nabídlo alternativu ke specializovaným nástrojům i Reflexu od Nvidie – otevřenou aplikaci Frame Latency Meter. Problém s nemožností nahlížet hře do renderovací pipeline obchází elegantně tak, že k rozpoznání změny využívá API běžně používané pro záznam obrazu. Funguje na grafických čipech všech výrobců, podporuje API DirectX 11 a DirectX 12 a operační systémy Windows 10 a Windows 11.

Na kartách AMD pro snímání obrazovky využívá Advanced Media Framework (AMF), u ostatních karet potom Desktop Duplication (DXGI). S DXGI může potom běžet na libovolné grafice. Výstupem je statistika latencí na snímek v souboru CSV.

Na jakém principu funguje a co umí, si probereme dále…



 
Snímková frekvence bylo dlouho jedinou metrikou pro srovnávání výkonu ve hrách. I při plynulých snímkových frekvencích ale může být hraní nepříjemné, pokud je cítit výrazný velký input lag – hra reaguje na ovládání s citelným zpožděním. Na měření snímkových frekvencí existuje nespočet nástrojů, pro otestování odezvy bohužel ne. Představíme si specializovaný Frame Latency Meter, který nedávno nabídlo AMD.

Celá aplikace vypadá navenek jednoduše. Při spouštění z příkazového řádku zná jen pár parametrů, v kontextové nabídce lze také nastavit jen pár věcí a ani v dokumentaci to nevypadá komplikovaně. Proto mi nebylo jasné, proč už není internet a YouTube plný návodů na to, jak můžete z pohodlí domova měřit input lag ve hrách s nástrojem od AMD zdarma a chtěl jsem udělat stručný návod, podle kterého by to šlo snadno zvládnout.

A když jsem se ve Frame Latency Meter začal vrtat víc, uvědomil jsem si, proč tomu tak nejspíš bude. Není zase tak jednoduché vše nastavit správně a při procesu měření narazíte na řadu potíží. Spíše než jednoduchá blbuvzdorná aplikace pro každého je FLM klasický opensource, u něhož vývojáři předpokládají, že se v problematice měření latencí orientujete, nebude vám dělat problém příkazová řádka ani další „skrytá“ nastavení, která najdete v konfiguračním souboru .ini. A bohužel se nedá říct ani to, že by fungovala bezproblémově. Zatím se mi to jeví tak, že AMD připravilo nějaký základ, na kterém bude muset komunita postavit vlastní nástroje s uživatelsky přívětivějším ovládáním, pokud to mají být schopní používat i normální lidé.

Dnešní článek berte tedy spíše jako představení aplikace a základních principů toho, jak funguje pro případ, že patříte k těm zdatnějším a do experimentování byste se chtěli pustit také. Já se na něj pak ještě zkusím podívat víc do hloubky, a když se dopracuji k výsledkům měření, které k něčemu budou a budou publikovatelné, k Frame Latency Meter se ještě vrátíme.

Stahujte aplikaci i zdrojové kódy

Aplikaci AMD Frame Latency Meter můžete stáhnout na stránkách AMD gpuopen.com. Zdrojové kódy, které si můžete sami zkompilovat, hlášení potíží a diskuze je na GitHubu GPUOpen.

V zipu je jen čtveřice souborů, ty rozbalíme třeba do adresáře c:\flm

readme.pdf
flm.exe
flm.ini
users_guide.pdf

 

readme.pdf je stručný popis aplikace a rychlé nastavení.

V users_guide.pdf je nejpodrobnější popis nastavení a funkcí včetně klíčových slov pro klávesové zkratky, které pak slouží pro konfiguraci klávesových zkratek v souboru ini.

Dále už je ve složce jen samotná aplikace flm.exe a konfigurační flm.ini.

Na konci dokumentu readme.pdf i users_guide.pdf je několik důležitých poznámek. Z nich se dá vytušit, že na ladění odezvy pro esport či online střílečky frame latency meter není nejvhodnější, protože nemusí fungovat korektně při extrémně vysokých snímkových frekvencích, a plně srovnatelné nejspíš nebudou ani výsledky naměřené na Radeonech s Advanced Media Framework a GeForce či Intelech s DXGI. Frame latency meter se tedy bude spíš hodit pro porovnávání různých nastavení systému a hry na stejné platformě – zkrátka když budete chtít zjistit, jestli má na vašem PC nějaké nastavení vliv na input lag a jak velký.

Známé problémy a omezení

V dokumentaci ještě AMD upozorňuje na problémy a omezení, na něž můžete při testech narazit.

Výkon kodeku pro zachytávání plochy (DXGI)

  • Zachytávání plochy je příliš pomalé, pokud je nastavená příliš vysoká obnovovací frekvence (> 144 Hz). Zkuste nastavit obnovovací frekvenci monitoru na 60 Hz, než se s FLM naučíte pracovat, a poté zkoušejte vyšší frekvence.
  • Některé hry mohou omezovat možnost duplikovat pracovní plochu při snímání obrazovky, což znemožňuje použití kodeku DXGI.
  • Kodek DXGI pro snímání musí být spuštěný na primárním displeji, jinak bude snímání snímků příliš pomalé.
  • Současné kodeky zachycení zpracovávají měření SAD (Sum of Average Difference) pomocí CPU a na některých počítačích mohou být příliš pomalé.

Nezobrazuje se žádný výsledek

  • Není zobrazen žádný výsledek – Výchozí nastavení nemusí spustit měření latence. Zkuste upravit nastavení pro ThresholdCoefficient a AVGFilter v souboru flm.ini
  • FLM nebude fungovat při použití připojení ke vzdálené ploše.

Zobrazené výsledky latence jsou příliš vysoké

  • Při vysokých snímkových frekvencích mohou měření FLM vykazovat vyšší hodnoty než ty, které naměříte specializovaným hardwarem.

S principem, na jakém frame latency meter funguje, se může stát, že nebude stíhat zachytit všechny snímky a měření v takovém případě nebude odpovídat realitě. K tomu, abyste mohli ověřit, jestli to systém zvládá, slouží klávesová zkratka pro zachytávání kontrolních snímků, detaily najdete v users_guide.pdf. Ve zkratce to ověříte tak, že spustíte nějakou aplikaci, která zobrazuje počítadlo jednotlivých snímků, budete zachytávat oblast s počítadlem a po uložení sekvence kontrolních snímků je projdete a ověříte, zda jsou zachycené všechny.



Snímková frekvence bylo dlouho jedinou metrikou pro srovnávání výkonu ve hrách. I při plynulých snímkových frekvencích ale může být hraní nepříjemné, pokud je cítit výrazný velký input lag – hra reaguje na ovládání s citelným zpožděním. Na měření snímkových frekvencí existuje nespočet nástrojů, pro otestování odezvy bohužel ne. Představíme si specializovaný Frame Latency Meter, který nedávno nabídlo AMD.

Aplikaci je nejlépe spouštět z příkazového řádku, měli byste ji spustit s oprávněním administrátora.

Stručnou nápovědu můžete zobrazit přímo v příkazové řádce příkazem flm -help.

c:\flm>flm -help
Frame latency meter v1.0.0 command line options

=== How to run a test ===

Step 1: Configure your primary monitor to run the game on.
        Set the monitor to use free sync or have it set to an appropriate refresh rate.
Step 2: Run flm.exe
        when you press the right Alt key, you should see a yellow capture region box.
Step 3: Run the game
        Adjust the game scene placement so that the FLM capture region is situated in an area
        where the scene transitions from dark to bright when the mouse is moved horizontally.
        Note: The bounding box will only show if the game is running in window mode.
Step 4: Select start measurements key sequence (default is ALT+T)
        Wait for the capture process to start, it may take a few seconds to start as FLM process data
        you should see the mouse move left and right in rapid concession while the application records
        latency measurements.Some games may require you to press down on the mouse keys to move the mouse
        left and right.
        Console output will show the running latency and frame latency when FLM detects a change

        RUN: .|.. FPS xx.xx, Latency xxx.x ms, x.xx frames

        A running series of dots and a vertical bar will indicate at what rate these
        latency measurements are occurring.
Step 5: Select stop measurements and review the console outputs values.

        Starting measuring
        RUN: .... FPS xx.xx, Latency xxx.x ms, x.xx frames
        Stopped measuring

=== How to change the capture codec for a test ===

   Running flm.exe with no command line option, will auto detect the systems vendor and GPU,
   then it will select the best capture codec to use.
   if you want to override this feature, simply specify the capture codec to use in the command line.

   Capture codec options:

   -AMF  : Capture frames using AMF codec  (Default option, works only for AMD GPU's)
   -DXGI : Capture frames using DXGI codec (Works on any GPU connected to main display)

   Runtime options:

   -FG   : Use this flag when measurements are for games with frame generation enabled.

   Example usage:

   flm.exe -DXGI

   Will use the desktop capture codec, which will run on any GPU supported by DX11

   For more details on this amd more see the users guide.

c:\flm>

Jenom v rychlosti výtah z vestavěné nápovědy výše v češtině:

  1. Nastavte monitor, na němž běží hra, jako primární a zapněte na něm FreeSync nebo nastavte odpovídající obnovovací frekvenci.
  2. Spusťte flm.exe (jako správce). Při běhu hry po stisknutí pravého Alt uvidíte žlutou oblast, kterou bude nástroj zachytávat (pozn. na regionální klávesnici nefunguje, protože má pravý Alt funkci AltGr)
  3. Spuštění hry:
    • Nastavte pohled ve scéně tak, aby oblast pro zachytávání překrývala část, na níž se bude při simulovaném pohybu myši střídat světlá a tmavá plocha.
  4. Měření latence:
    • Stiskněte klávesovou zkratku pro zahájení měření (výchozí je Alt+T).
    • Počkejte několik sekund na spuštění procesu. FLM zaznamenává latenci během pohybu myši vlevo a vpravo. Výstup v konzoli ukáže aktuální latenci a FPS.
  5. Zastavení měření:
    • Zvolte příkaz pro ukončení měření a zkontrolujte hodnoty výstupu v konzoli.

Volby pro změnu kodeku pro zachytávání:

Příklad užití:

flm.exe -DXGI

Před testováním projděte i konfigurační .ini

V souboru .ini je těch nastavení mnohem více. Jsou v něm detailně okomentované, níže je pro představu pouze seznam klíčů, které v něm najdete. Z toho je asi jasné, že naučit se nastavit FLM a něco s ním správně naměřit nebude na hodinku.

CAPTURE

 



Na první pokus asi není nutné, abyste studovali všechna nastavení, podstatné bude spíše soubor .ini v rychlosti proběhnout, zda není některé z výchozích nastavení v rozporu s tím, na čem a co chcete měřit, a můžete to zkusit.
Snímková frekvence bylo dlouho jedinou metrikou pro srovnávání výkonu ve hrách. I při plynulých snímkových frekvencích ale může být hraní nepříjemné, pokud je cítit výrazný velký input lag – hra reaguje na ovládání s citelným zpožděním. Na měření snímkových frekvencí existuje nespočet nástrojů, pro otestování odezvy bohužel ne. Představíme si specializovaný Frame Latency Meter, který nedávno nabídlo AMD.

Princip měření je podobný jako u hardwarových zařízení pro testování latencí. Ty obvykle podporují více režimů měření. Jedním je měření odezvy přes stisk tlačítka myši, dalším měření odezvy na pohyb myši. Při měření přes stisk tlačítka se obvykle zaznamenává rozdíl v časech mezi stiskem tlačítka myši a zábleskem z hlavně zbraně.

Při měření reakce na pohyb myši musíte najít scénu, v níž bude nějaký dostatečně kontrastní přechod, přes který budete přejíždět myší. Znamená to stoupnout si k nějaké jednolitějšímu tmavému objektu před světlým pozadím či naopak. Software pak simuluje pohyb myši a přes přechod přejíždí tam a zpět a měří, jak dlouho hře trvá, než se v dané oblasti změní barva pod plochou, kterou snímá senzor.

Příklad měření s krabičkou OSLLT (Open Source Latency Tool) je na fotce níže. Software po spuštění měření začne pohybovat myší doleva a zpět a krabička přejíždí mezi tmavým sloupkem a světlejší silnicí.

Podobně funguje i Frame Latency Meter, jen místo krabičky se snímačem umístíte na dané místo oblast, v níž bude aplikace zachytávat obraz.

AMD doporučuje aplikaci spouštět z příkazové řádky s oprávněním administrátora. V příkazové řádce spustíte aplikaci příkazem flm.exe s příslušným parametrem. Na Radeonech byste měli použít parametr -AMF, na ostatních kartách -DXGI, a při testech s generováním snímků ještě přidat parametr -FG.

Po spuštění klepnete do konzole příkazového řádku pravým tlačítkem a otevře se okno s nastavením dalších parametrů. V něm je klíčové nastavení regionu pro snímání.

Pak už stačí jen spustit hru, načíst scénu pro testování, nastavit přechod barevný vertikální přechod poblíž regionu a spustit testování klávesovou zkratkou (ve výchozím nastavení Alt+t). A po nějaké době stejnou zkratkou ukončit měření.

Výsledky v našem případě najdete v souboru c:\flm\FLMlatency.csv.

Ten rovnou někam zkopírujte, protože jej utilita s každým novým měřením přepisuje.

Data jsou v klasickém CSV, které už otevřete v jakémkoliv tabulkovém editoru, u těch lokalizovaných musíte ohlídat správné nastavení oddělovačů.

 

Průměrné latence potom najdete v předposledním sloupečku.

Původně jsem měl v plánu udělat i ukázkové srovnání hodnot naměřených z nějaké hry na Radeonu RX 7700 XT pomocí AMD Frame Latency Meter s hodnotami naměřenými pomocí OSLTT. Ale když jsem začal srovnávat výsledky z OSLTT a z AMD FLM, z nějakého důvodu to vypadalo, že měření z FLM neovlivňuje stav Antilag+ v ovladačích, zatímco na měření s OSLTT to vidět je.  Budu tomu tedy muset věnovat víc času a když se zadaří, ještě se k Frame Latency Meter vrátíme i s nějakými srovnávacími měřeními.

A pro majitele GeForce ještě připomenu, že mají k dispozici řešení, které není tak univerzální, nicméně funguje jednodušeji a lépe ve hrách s integrovaným API Reflex. V nich můžete latence měřit s pomocí aplikace FrameView od Nvidie. Na ni se třeba můžeme podívat jindy.