Rozkládání zátěže kódování x264 mezi jádra a vlákna: Core Parking ON, WinRAR bez Core Parkingu
Kapitoly článků
Nyní situaci zkomplikujeme, přesněji řečeno uvedeme do normálu: necháme zapnutý Core Parking, což je výchozí stav. Pojďme rovnou na grafy zátěže, bude to veselé. Probíhá úplně stejný skript, stejná úloha, jen do toho začne kecat Core Parking.
Takto to vypadá ve Windows 8 s Bulldozerem na všechna jádra (Windows 7 nemá smysl ukazovat, tam to s Bulldozerem nefunguje):
Bulldozer, zátěž všech jader, Windows 8, vlevo CoreParking ON, vpravo OFF
Jak vidíte, žádná změna. Teď vám ukážeme druhou a třetí instanci. (měli byste očekávat zátěž ve stylu 10101010 a 11110000):
Bulldozer, Windows 8, CoreParking ON, vlevo zátěž 10101010, vpravo 11110000
Co se stalo? I přesto, že jsme nastavili spřažení na 10101010, systém z vybraných jader dvě zaparkoval a udělal z toho 10100000. Zdá se vám to divné? Ano, takhle divně opravdu Core Parking funguje. Při třetí instanci se systém jakoby pokusil zaparkovat stejné moduly, ale protože první dva už byly zatížené a třetí potřeboval „pro strýčka Příhodu“, zaparkoval jen čtvrtý. Každopádně se systém v této situaci zachoval v podstatě dle očekávání.
Jestli to doteď nebylo složité, nyní to složité být začne. Přejdeme ke Core i7. Jak totiž už víte, Core Parking se chová ke Core i7 jinak ve Windows 7 a jinak ve Windows 8. Druhá instance tedy vypadá na Lynnfieldu (na Sandy Bridge je to stejné) takto:
Core i7, Core Parking ON, zátěž 10101010, vlevo Windows 7, vpravo Windows 8
Nyní nám to komplikuje už i operační systém, resp. rozdíl mezi Windows 7 a Preview verzí Windows 8. Zatímco ve Windows 7 to zafungovalo dle očekávání (a poněkud zbytečně byla zaparkována dvě Hyper-Threadingová vlákna), Windows 8 k procesoru přistoupily stejně jako k Bulldozeru (tedy z našeho pohledu logičtěji) a systém zaparkoval dvě jádra (v průběhu práce došlo k přeparkování, ale počet pracujících a zaparkovaných jader se nezměnil, jen si dvě jádra vyměnila roli). Z toho celkem logicky vyplývá, že ve Windows 7 bude tato činnost rychlejší, uvidíme to za chvilku ve výsledcích.
Ještě se podívejme na třetí instanci, tedy 11110000:
Core i7, Core Parking ON, zátěž 11110000 vlevo Windows 7, vpravo Windows 8
Možná jste to po pochopení dosavadního průběhu už očekávali: situace se obrátila. Windows 7 zaparkovaly všechna HT vlákna bez ohledu na to, že první dvě jsme chtěli využít, naproti tomu Windows 8 to udělaly správně (občasné špičky na jiném jádru a propady v pracujících jádrech berte s rezervou, Windows 8 to takhle divně občas kreslí, přestože s realitou tyto výkyvy moc společného nemají - však to není ještě ani betaverze).
Zbývá vše shrnout do skriptgrafu a nakreslit výsledek:
Protože je toho v grafu hodně, rozebereme si to v bodech:
- Windows 8 při snaze zatížit jádra bez vlivu Hyper-Threadingu (moduly bez vlivu druhých jader) značně komplikují situaci a výkon se propadá, a to jak u Bulldozeru, tak u Core i7.
- Podobný, ale shodou okolností ne tak markantní problém způsobují Windows 7 při snaze zatížit první dvě celá jádra včetně HT (u AMD všechna jádra prvních dvou modulů).
- Pokud máte zapnutý Core Parking, pak se ani na Windows 7, ani na Windows 8 (zatím) nemůžete spolehnout na to, že systém bude dělat, co očekáváte, pokud rozdělíte práci vícevláknových úloh ručně mezi jádra tak, jak sami uznáte za vhodné.
Core Parking je prostě divná věc, bohužel to, že je ve výchozím nastavení zapnut, z něj dělá element, se kterým musíme při recenzování počítat. A faktem je, že jsme s tím v minulé recenzi Bulldozeru v jedné aplikaci nepočítali:
WinRAR 4.10 beta 1
To je právě ten typ aplikace, ve které Bulldozer exceloval a porazil i Core i7. Proč? Protože jsme měli zapnutý Core Parking. Poté, co jsme ho vypnuli a přetestovali pouze s Core i7 (přidali jsme také další procesory), to vypadá takto (vše ve Windows 7):
Bulldozer je definitivně poražen (v tomto testu dokonce i procesorem Core i7 870), můžeme jít domů.