Ahoj, udělal jsem si malý test výkonu. Může se někomu hodit...
PROČ TAKOVÝ TEST
Řešil jsem zpětně už nevypátratelný výkonový propad fps ve Sturmoviku. Na internetu jsem objevil doporučení přiřadit pro IL-2 jedno samostatné jádro procesoru, zatímco ostatní programy by běžely na zbylých jádrech.
Ačkoli existuje několik návodů, jak na to, nikde jsem nenarazil na tvrdá čísla, testy či grafy, které by dokazovaly, zda a jak moc to s výkonem pomůže. Naopak jsem četl komentáře, které úspěchy podobných pokusů zpochybňovaly - dokud někde nebudou testy.
Takže jsem si jeden test s grafem udělal.
STRUČNÝ VÝSLEDEK
Vymezení vlastního jádra pro IL-2 má ohromný vliv na výkon ve smyslu plynulosti. Sturmovik jel v podstatě bez výkyvů fps (59 min, 60 průměr).
Stejného výsledku bez rozdělení jader jsem dosáhl pouze při snížení detailů na "very low".
Obrázek grafu je dole.
TESTAMENT
Účelem testu je objektivně ukázat, zda a jaký vliv na výkon v IL-2 má rozdělení běžících aplikací mezi jednotlivá jádra na mé konkrétní konfiguraci.
Dále mne zajímal dopad na výkon při různém nastavení mého konkrétního sw prostředí a grafických detailů ve hře.
Upozorňuji, že není mým cílem zobecňovat jakékoli závěry plynoucí z testu nebo cokoli dogmatizovat. Testoval jsem hlavně pro sebe, pouze na jednom PC, "podomácku" a musí se to podle toho tak brát :).
Systém: Win XP SP 3
Verze hry: IL-2 1946, 4,09m Steam
Ovladače: 301.42
NASTAVENÍ
V testu jsem použil praktické programy a nastavení, se kterými normálně hraju a používám je. Nezajímá mne honba za vysokým fps - chci prostě, aby hra při zachování plynulého pohybu vypadala co nejpěkněji.
Ovladače Nvidia
AF: 8x
AA settings: různé, dle testu
AA Gamma correction: On
AA mode: override
AA transparency: Off
CUDA: All
Ext. limit: Off
Max. pre-rendered: application
Multi display: Single Performance
Aniso sample opt: On
Negative LOD: Clamp
Texture filtering: Quality
Trilinear opt: On
Threaded opt: Auto
Triple Buffering: Off
Aniso filter opt: Off
Vertical sync: On
Nastavení grafiky v IL-2: nejvyšší možné, OpenGL.
Programy na pozadí: AVG, Steam, Fraps, Freetrack (60fps), Hamachi, Skype.
POUŽITÉ VÝRAZY
8xAA = antialiasing 8x CSAA.
FXAA = antialiasing typu FXAA + 2x běžný AA.
+ = na pozadí je spuštěný další program, jehož dopad na výkon IL-2 mě zajímal. Např. +FT znamená, že běží Freetrack. Podobně "-" znamená vypnutí programu.
FT, Ha, Skp = Freetrack, Hamachi a Skype.
All = všechny tyto tři programy běží společně.
Def = všechna grafická a jiná nastavení jsou na default, původní testovací hodnoty.
Water, sky = stejnojmenná nastavení v conf.ini.
very low = grafická nastavení na nejnižší hodnoty.
Separate cores = všechny procesy, které mohou, běží v core0 a IL-2 v core1
Defaultní nastavení:
FT, Skp: off
Ha: on
Core: obě
Water: 2
Sky: 2
Detaily: nejvyšší možná nastavení (perfect, Excelent, high atd.)
METODIKA MĚŘENÍ
Pomocí Fraps jsem měřil min, max a průměrný počet fps během 30vteřinové testovací sekvence letu v IL-2. Prováděl jsem 3 měření od každého typu nastavení a jako výsledek zahrnul jejich průměrnou hodnotu.
Sledoval jsem jen minimální a průměrné fps, protože max fps bude vždy 60 (mám Vertical sync = On).
Testovací sekvence byla track z QMB. Letka 4x A-20 nad mapou Slovensko Summer ve výšce 1000 m, mraky 2000 m a počasí Poor. Jde půl napůl o rozhlížení v kokpitu se zoomováním, a o vnější pohled na letoun 360° kolem dokola.
Mezi jednotlivými měřeními ani změnami nastavení jsem neresetoval. V grafu jsou vyneseny pouze výsledky průměrných fps.
VÝSLEDKY
Překvapil mne značný výkonový výkyv mezi 8xAA a 2x+FXAA. Ačkoli jsem si pouhým okem nevšiml nikterak zásadních rozdílů na hranách, FXAA nabízí o plných 33 % lepší výkon (37 vs 56 fps) při defaultním nastavení. Výborný výkon 56 fps je však vykoupen výkyvy na fps min 27, tzn. výrazná neplynulost v určitých herních situacích.
Propad FXAA na 35 fps při zapnutí Freetracku mi nějak nehraje. Nemám pro to vysvětlení.
Zajímavý je také skok o 20 % nahoru na 44 fps při vypnutí Hamachi. Při jeho opětovném zapnutí a navíc přidání Skype zůstal ale výkon na stejných 44 fps! Nechápu. Skype samotný, zdá se, nemá na výkon ve hře měřitelný vliv. Pravdou ovšem je, že v době testu neprobíhal žádný hovor. Konferenční hovor 3-4 stanic by možná výsledek změnil.
Dobře patrný byl opět rozdíl mezi 8xAA a FXAA se zapnutými programy na pozadí. S 8xAA měl Sturmovik o 20 % nižší fps. Další měření jsem prováděl při zapnutém 8xAA s úvahou, že by se výsledky měly s vyšším zatížením výrazněji lišit v jednotlivých nastaveních.
Další pokusy s nastavením "water" a "sky" ukázaly, že s nižším nastavením vykreslování není výkonový přírůstek na mém stroji zase tak výrazný. Každopádně větší vliv na výkon měly mraky (o 10 % vyšší fps při sky=1). Uznávám, té vody na Slovensku zas tolik není :). Ale i tak, 5 % nárůst fps na mapě, kde není pořádná souvislá vodní plocha v dohledu... zajímavé.
No a dostáváme se ke zlatému hřebu. Plnou palbu průměrných 60 fps dosáhlo oddělení IL-2 do samostatného jádra! A to při všech programech spuštěných a defaultním nastavení grafiky na perfect. 60 fps mělo v testu už jen jedno další nastavení: veškerá grafika na very low, kteréž jsem zařadil jen ze zvědavosti a nelítal bych s tím.
ZÁVĚR
Já mám jasno, Sturmovika pořeším rozdělením pro jednotlivá jádra procesoru. Do doby reinstalování systému (po 7 letech už by to chtělo) mám tedy vystaráno.
Pokud podobnou věc řešíte také, přeju vám, aby na vašem stroji core-magic také zafungoval. :) Velice uvítám zkušenosti vás ostatních, jak se věci mají na jiných procesorech - např. jestli na i5/i7 už to prostě není znát.
---
Tož ať to lítá a máte stejný počet startů i přistání.
Wolfik
Upravil/a Wolfik dne 26-01-2013 01:01
Ahoj,
technicky nebylo potřeba cokoliv ověřovat, dává to totiž smysl. Zajímavý je ale dopad na výkon získaný při měření, i když ne zcela vhodnou metodou.
Moderní vícejádrové procesory pracují tak, že automaticky přepínají běh procesu na všechny jádra (i u jednovláknových procesů jako je IL-2). Důvodem je jednak transparentně vyhovět požadavkům na výkon pro proces, druhak rozložit tepelnou zátěž na celý čip bez vědomí operačního systému. Proto také i jednovláknové procesy přibližně stejně zatěžují všechna jádra, to ale do maxima výkonu 100%/core.
Jak získat maximum výkonu se snížením lagů a fps dropů je tedy jasné, vyhradit jednomu procesu jedno jádro a ostatní procesy z onoho vymlátit.
Nastavení affinity (spřažení) přes conf.ini v konfiguraci IL-2 Sturmovik nebo správci procesů je tedy směšné. Takové prostředí je totiž stále vysoce konkurenční a nikde nezabraňuje tomu, aby jiný proces zaparkoval na jádro, kde běží IL-2 (byť jen na jednu milisekundu). Spřažení nastaví jen kam proces nesmí.
Code
[rts]
;This section is for input controls for mouse and joystick
;Tato sekce ovládá kontrolu pro myš a ovládací páku
ProcessAffinityMask=0
;IL-2 supports two processors using the ProcessAffinityMask in the conf.ini. There's little documentation from Maddox Games about how you're supposed to use it, though.
;IL 2 používání podpory dvoujádrových procesorů v conf.ini pomocí ProcessAffinityMask
;
;ProcessAffinityMask=1 Core1 (default) or
;ProcessAffinityMask=2 Core2 or
;ProcessAffinityMask=3 Core1+2
Nepomůže ani usnadněné spuštění přes START (tato metoda ještě neumožní zachytávat přes FRAPS)
"titulek" Název, který bude zobrazen v záhlaví okna.
LOW Spustí aplikaci v prioritní třídě IDLE (nečinná).
NORMAL Spustí aplikaci v prioritní třídě NORMAL (normální).
HIGH Spustí aplikaci v prioritní třídě HIGH (vysoká).
REALTIME Spustí aplikaci v prioritní třídě REALTIME (reálný čas).
ABOVENORMAL Spustí aplikaci v prioritní třídě ABOVENORMAL (nadprůměrná).
BELOWNORMAL Spustí aplikaci v prioritní třídě BELOWNORMAL (podprůměrná).
AFFINITY Určuje masku spřažení procesorů jako šestnáctkové číslo.
Spuštění procesu bude omezeno na tyto procesory.
Je tedy potřeba udělat víc.
1. Rukama popřepínat vše co běží na jádru IL-2 pryč z něj (na Win7 to může být kolem 70 a víc procesů)
2. Pořídit si na takovou věc ProcessLassohttp://bitsum.com..., které jednou nastavíme a ono se stará.
Co by mělo běžet mimo jádro s IL-2 Sturmovik (nebo vůbec)
Všechno vyjma procesů bečících pod účtem SYSTEM (přepnutí affinity systém nezabije, s procesy bežícími pod uživatelem SYSTEM nehne ani admin, systém vyžaduje ještě vyšší oprávnění)
TeamSpeak (v závislosti na konfiguraci 40% fps dolu)
Internetové browsery (obnovení stránek, agresivní flash reklama může pěkně lagnout)
Různé aktualizace OS, Antiviru, Anti-Spyware, Acrobat, Google, Steamy a jiné havěti a jejich zjišťování aktuálních verzí.
Driver helpery (nejsou nic jiného než automatické aktualizace nebo zjišťování verzí, naopak nepomáhají plynulosti běhu)
Indexování obsahu disku
Ještě větší neštěstí
Neštěstí je, když například vypnete službu automatické aktualizace a antivir nebo jiná hlídací služba se kvůli tomu vzbouří a Windows update službu nastartuje v nejnevhodnější chvíli s okamžitým zjišťováním nových verzí.
Ve své bohorovnosti máte otevřený browser s prázdný oknem a on začne stahovat aktualizace RSS/ATOM
Když se čímkoliv zatíží služby běžící pod účtem SYSTEM, ty služby, kterým nejde vyhradit konkrétní jádro (lagy může způsobit jakýkoliv driver obsluhující zařízení, např. neroztočený HDD v nějakém šetřícím módu).
Útoky na SW firewall ze sítě.
Když se nastaví u Hyper-theread dva procesy na dvě virtuální jádra 0 a 1 jednoho fyzického, dva procesy na dvě virtuální jádra 2 a 3 jednoho fyzického, dva procesy na dvě virtuální jádra 4 a 5 jednoho fyzického, dva procesy na dvě virtuální jádra 6 a 7 jednoho fyzického.
Přeinstalovat OS, dodat neobtěžující AVO, k tomu vypnout beztak zbytečné služby a nešahat na to.
2. Pořídit si na takovou věc ProcessLassohttp://bitsum.com..., které jednou nastavíme a ono se stará.
Na automatické rozdělení jsem vyzkoušel 3 různé programy a nechal si PriFinitty (v2.50)http://www.bbses..../index.htm. Příjemné a jednoduché nastavování.
Jenom antivir jsem nedokázal donutit běžet tak jak chci (AVG).
Clone já bych řekl, že ta procesorová afinita není úplně směšná, i když v tom zbytku máš pravdu. Důvody jsou dva.
1) Přepnutí vlákna mezi jádrama taky něco stojí a s afinitou se to neděje.
2) Plánovač procesoru dělá statistiku vytíženosti jader a procesy přepíná na ty nevytížený jádra. V zásadě jádro vytížené ilem by v těch statistikách mělo docela slušně bránit jiným procesům v přepnutí na to zvolené jádro.
Jinak jistě pokud někdo nechá běžet několik browserů s animovanejma gifama a flash aplikacema a bůh ví čím ještě, nelze se divit ničemu.
IL-2 Sturmovik™, Cliffs of Dover™, Pacific Fighters™ are trademarks or registered trademarks of 1C EUROPE, 1C-Multimedia, 1C ONLINE GAMES.
Other marks used herein are those of their respective owners.