Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: Ubisoft
Grafické karty Článek Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce | Kapitola 7

Adam Vágner

Adam Vágner

7. 4. 2023 15:00 59

Seznam kapitol

1. Důvěřuj, ale prověřuj! 2. Testovací sestava 3. HD textures 4. Ray tracing a vliv na kvalitu obrazu 5. Co udělá chyba měření 6. Ryzen 9 5900X a RTX 4090 s RT 7. Proč procesor nestíhá, i když se fláká 8. Ryzen 9 5900X a RTX 4090 bez ray tracingu 9. Ryzen 9 5900X a RTX 4090, vliv odrazů a stínů DXR na výkon 10. Ryzen 9 5900X a RTX 4080 s RT 11. Ryzen 9 5900X a RTX 4080 bez ray tracingu 12. Ryzen 9 5900X a RTX 4080, vliv odrazů a stínů DXR na výkon 13. Ryzen 9 5900X a RX 7900 XTX s RT 14. Ryzen 9 5900X a RX 7900 XTX bez ray tracingu 15. Ryzen 9 5900X a RX 7900 XTX, vliv odrazů a stínů DXR na výkon 16. Core i7-13700K a RTX 4090 s RT
17. Core i7-13700K a RTX 4090 s RT, HD textures 18. Core i7-13700K a RTX 4090 bez ray tracingu 19. Core i7-13700K a RTX 4090, vliv odrazů a stínů DXR na výkon 20. Core i7-13700K a RTX 4080 s RT 21. Core i7-13700K a RTX 4080 s RT, HD textury 22. Core i7-13700K a RTX 4080 bez ray tracingu 23. Core i7-13700K a RTX 4080, vliv odrazů a stínů DXR na výkon 24. Core i7-13700K a RX 7900 XTX s RT 25. Core i7-13700K a RX 7900 XTX s RT, HD textures 26. Core i7-13700K a RX 7900 XTX bez ray tracingu 27. Core i7-13700K a RX 7900 XTX, vliv odrazů a stínů DXR na výkon 28. Shrnutí výsledků s ray tracingem 29. Shrnutí výsledků bez ray tracingu 30. Když spíš než grafiku testujete procesor 31. Far Cry 6: etalon implementace ray tracingu. Akorát že vůbec. 32. Hrajete jen hry z testů karet?

Zaráží vás, že se výsledky testů grafik napříč weby někdy výrazně liší? Podíváme se na jednu z mnoha příčin. Vezmeme si tentokrát jen jedinou hru a v unikátním testu ji pořádně rozpitváme na sestavě s Ryzenem 9 5900X a Core i7-13700K a Radeonu RX 7900 XTX, GeForce RTX 4080 a RTX 4090. Uvidíte, jak extrémně může někdy výsledky ovlivnit jenom jiná testovací platforma.

Reklama

Na úvod této kapitoly vás rovnou varuji, abyste ji brali s rezervou. A nemyslím tím jen to, že do problematiky vícevláknového programování nevidím (a nevidíme ani do samotné hry, jen zvenčí pozorujeme, jak se to chová). S tím chováním procesoru to totiž není moc jednoduché.

Od té doby, co procesory dostaly turbo, hyperthreading či muli-threading, v systému běží souběžně tisíce vláken, desítky jich spouštějí jen samotné hry a na to se ještě nabalují další vlákna ovladačů, ochran a dalších věcí, se zjevně nedá zrovna jednoduše zjistit, jak procesor zatěžuje samotná hra

U metriky vytížení procesoru a jednotlivých vláken musím zdůraznit, že u Ryzenu je aktivní turbo CORE, takže neběží na stálých taktech, ale násobič (resp. frekvence) se mění s vytížením, teplotou a spotřebou. A do toho ještě může systém bez ohledu na frekvenci vkládat do zpracování i prázdné cykly, takže hodnota vytížení procesoru, jakou vám diagnostické programy zobrazují, se může lišit v závislosti na tom, jakým způsobem jednotlivé aplikace pro monitoring k výpočtům vytížení přistupují.

Teoretický výkon, vytížení, efektivní výkon, využití, čert aby se v tom...

Podle toho, co se povídá na internetu, aktuální správce úloh z Windows dynamické přetaktování nebere moc v potaz a pro zjednodušení počítá využití procesoru (počitadlo % Processor Utility) snad ve vztahu k nižším taktům či taktům bez turba, možná i bez zahrnutí prázdných cyklů. Napríklad HWInfo má i metriky, v nichž kalkuluje jak s různými takty, tak s vkládáním prázdných cyklů a aktuálním taktem, takže v logu uvádí i přepočtený „efektivní“ takt procesoru.

S přetaktováním přes turbo má pak procesor pochopitelně výkon než bez něj, takže Správce úloh by prý kvůli tomu při plně vytíženém jádře na maximálním taktu procesor vykazovat i vyšší výkon než sto procent, prakticky to prý Microsoft vyřešil tak, že zobrazované vytížení v takovém případě zastropuje na sto procentech.

Takto nějak to vypadá na zmíněném Ryzenu napříč různými aplikacemi, pokud pustím Prime95 s dvanácti programovými vlákny a natvrdo přiřadím každému druhému jádru jedno programové vlákno (tak, aby se počítalo vždy jedno vlákno na jednom fyzickém jádru). Podle Správce úloh je potom využití procesoru přes 60 %, a vidíte, že na „prázdných“ vláknech něco, co užírá v součtu zhruba jedno další vlákno. V HWInfo pak vidíte počitadla dvojí (Core x Tx Usage) a (Core x Tx Utility), přičemž hodnoty Utility ukazují vytížení 120 %. Process Explorer od Sysinternals si naopak myslí, že vytížených je v podstatě jen dvanáct jader, procesor je celkově vytížený z padesáti a na volných jádrech se nic moc neděje...

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

A paradoxní je, že když se přepnete ve Správci úloh na jinou záložku, už se na ní dozvíte, že zaměstnaná je jen polovina procesoru a zbývajících padesát procent výkonu připadá na nečinné procesy systému.

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

Jeden průběh benchmarku Far Cry 6 ve 4K pak vypadá ve správci úloh takto:

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

No a v Process Exploreru zase takto:

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz
Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

Ale taky se mi už stalo, že Process Explorer zátěž neviděl vůbec a po celou dobu se tvářil, že zatížení procesoru bylo kolem dvou procent.

Na tomo místě by se hodilo mít možnost sledovat, jak procesor zatěžují jednotlivá vlákna. Nejspíš to nějak jde přes Sledování výkonu přímo z Windows, ale ani u něj nevím, co z něj přesně padá – když dám sledovat vlákno, vyhledám všechna příslušející FarCry6 a přidám sledování času procesoru, výsledkem jsou poněkud rozporuplné grafy. Jednou to vypadá, že je zátěž rozdělená do více vláken anebo vytížené vlákno chybí, jindy je zase výsledkem výrazná zátěž v jediném vláknu a ostatní se drží při zemi. Buď jak buď se jeví, že hra má doslova jedno dvě náročnější vlákna a ta ostatní už potřebují jen zlomek procesorového výkonu.

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz
Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

Výsledky naměřené v článku pocházejí z Afterburneru, který má (asi) blíže k té jednodušší a méně přesné interpretaci ze správce úloh.

Na 4K stačí jakýkoliv procesor? Zapomeňte.

Ještě dnes často uslyšíte, že na 4K vám bude stačit jakýkoliv procesor, protože vás ve hrách bude brzdit grafika. Tento článek je celkem hezkým důkazem, že u karet jako RTX 4090 už to paušálně neplatí. Obecně je to stále pravda v případě slabších karet a i u těch výkonných to platí pro velkou většinu her. Určitě nenajdete moc akčních her, které by na maximálních detailech ve 4K na grafice střední třídy procesor jako Ryzen 9 5900X brzdil – když už, jde o tituly náročné na výpočetní výkon procesoru (strategie či simulátory s náročnou fyzikou).

Ale najdou se už i vyjímky, jako je právě Far Cry 6 v kombinaci s highendovými kartami poslední generace (a v o něco menší míře už to platilo i pro RTX 3090 a RTX 3090 Ti). U nových her pak pomáhá zaměstnávat grafiku ray tracing, pokud jej vypnete, můžete už taktéž v kritických situacích na limit procesoru narážet – jen občas v náročných scénách, ale může se to stát.

Málokdy se však limit ze strany procesoru projevuje tak, že se výkon propadá pod 90 snímků za sekundu jako ve Far Cry 6, většinou je ten procesorový strop na vyšších snímkových frekvencích.

Far Cry 6, vlákna a vytížení jednotlivých jader v rozlišení 3840 × 2160

Výsledky naměřené níže jsou z (téměř) nejnáročnějšího nastavení – není aktivní jen supersampling (resolution scale) a HD textury. Jinak jde o rozlišení 4K, globální detaily na Ultra a aktivní jsou oba efekty využívající ray tracing. Jde tedy o nastavení, u něhož je asi pro většinu lidí nepředstavitelné, že by hru mohl brzdit procesor.

Bejvávalo, minimálně pro RTX 4090 a ani pro ten Radeon RX 7900 XTX už to neplatí. V grafu níže jsou jednotlivá logická jádra (každé fyzické jádro se dvěma „podvlákny“, jsou barevně odlišená), první jádro je dole, dvanácté nahoře. Jde pouze o první ze tří porovnávaných nastavení, tedy rozlišení 4K (grafy s detailním vytížením jader v nižších rozlišeních najdete mezi miniaturami na konci předchozí stránky).

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

Z výše uvedeného grafu by se mohlo zdát, že Far Cry 6 dokáže nějak zaměstnat zhruba dvacet logických procesorových jader a jen zbývající čtyři se poflakují. Když se na graf ale podíváte líp, často si všimnete, že ve chvíli, kdy je v rámci fyzického jádra v jednom ze dvou logických CPU (vláknu) větší vytížení, u druhého vytížení klesá.

Spíš to tedy vypadá, že si hra v rámci jednoho fyzického jádra přehazuje náročnější vlákna mezi dvěma logickými jádry. Když je zátěž jednoho logického CPU vysoká, zátěž druhého klesá a naopak, tedy že multi-threading nedokáže efektivně využít.

Celkové průměrné vytížení procesoru je něco kolem 22 %, celkové vytížení jednotlivých jader je v maximu s bídou 38 %, tak jaktože to brzdí procesor? Vrátíme se ke grafu s jednotlivými vlákny, konkrétně k druhému jádru, resp. k CPU 3 a CPU 4, tedy logickým procesorům (vláknům) 3 a 4.

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

U nich už je vidět průměrné zatížení CPU3 kolem 66 % a CPU4 kolem 18 % a vypadá to, že jde o jedno dvě náročnější vlákna, která přeskakují mezi dvěma logickými jádry – když je vysoká zátěž jednoho jádra, je nízká zátěž druhého a naopak.

Když budu předpokládat, že jde skutečně o jedno vlákno, které se stěhuje mezi dvěma logickými procesory, a vytížení jader sečtu ve skládaném grafu:

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

...je vidět, že uzme přes 80 % výkonu jednoho logického CPU. Nezdá se tedy, že toto logické jádro nemělo co dělat, pří více než 80% zatížení to spíš vypadá, že právě tady je úzké hrdlo systému a ostatní vlákna musejí většinou čekat, až hra na tomto jádře dopočítá, co má.

Jenže když se náročné 80% vlákno stěhuje mezi dvěma logickými CPU, je už při výpočtech průměrného vytížení jediného logického CPU zátěž rozmělněná mezi obě logická CPU (vidíme už v průměru jen 66% a 18% vytížení CPU). Jenom kvůli tomu, že si náročné vlákno přeskakuje z jednoho jádra do druhého.

Když se pak hodnoty z obou logických CPU zprůměrují, už nám to dá v průměru jen cca 42% zátěž fyzického „dvoujádra“.

A to jsme na nejvýše zatíženém jádru. Zbývá dalších 11 fyzických, resp. 22 logických jader, mezi které se dále rozpočítají průměry z průměrů (včetně těch čtyř jader, co nedělají prakticky nic). V praxi tak máme jedno jádro zatížené na více než 80 %, které pravděpodobně brzdí vše ostatní (a nudí se asi, jen když čeká na synchronizaci s ostatními vlákny na ostatních jádrech), ale v monitoringu vidíme průměrné 20% vytížení procesoru a vypadá to, že se procesor nudí.

Když zatížení obou vláken v jednom jádru sečteme a zobrazíme si zatížení jednotlivých fyzických jader, místo přeskakující zátěže dostaneme graf, v němž se vytížení jednotlivých fyzických jader pohybuje víceméně na stejné úrovni po celou dobu benchmarku.

Když procesor nestíhá aneb proč u nás ve Far Cry 6 Radeony nedrtí GeForce
i Zdroj: PCTuning.cz

Graf je trochu matoucí, protože 100 % na svislé ose pro fyzické jádro odpovídá 2× 100 % za každé vlákno. Pokud je tedy naplno vytíženo jen jedno ze dvou logických jader (vláken), hodnota v grafu se nedostane přes 50 %.

V grafu je vidět jen jedno intenzivně vytížené jádro, tři s o něco nižší zátěží a zbývající jádra už toho víc proflákají, než napočítají. Dvě pak nejsou zatížená prakticky vůbec.

Buď jak buď, většina her si s vícejádrovými procesory poradí líp, ale pořád to neznamená, že nenarazíte na hry, které jsou na tom se schopností využívat vícejádrové procesory podobně jako ten Far Cry 6 – není to zase taková rarita.

Asi nemusím vysvětlovat, že přilepování nových jader do procesoru v takové situaci nepomůže ničemu, protože herní výkon bude pořád bude viset na tom nejnáročnějším vláknu, na které musejí ostatní jádra čekat. Co naopak pomáhá, je navyšování výkonu na jádro.

Na další stránce se podíváme na to, co to udělá, když vypnete ray tracing. V případě Far Cry 6 je výsledek hodně překvapivý.

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama