Core Parking ve Windows 7 a Windows 8, chování při poloviční zátěži procesoru
Kapitoly článků
Následující stránky budou obsahovat hromadu grafů zátěže všech jader procesoru, a to proto, abychom pochopili, co se vlastně ve Windows děje, pokud budeme zatěžovat vybraná jádra. Operační systém Windows 7 obsahuje funkci Core Parking, která se rozhoduje o tom, jaká jádra budou zatížena a jaká naopak budou „spát“. Primárním účelem této funkce je šetření energie uspáním té části procesoru, která není nutně potřeba, sekundární funkcí je rozložení zátěže mezi jádra (fyzická i virtuální) co nejlepším způsobem.
Systém Windows 7 v tomto smyslu Bulldozer nezná, takže zde k parkování jader nedochází vůbec. Veřejně vypuštěná Developer Preview verze Windows 8, která má ještě do finální verze zatraceně daleko (dokonce i do betaverze), však už podle vyjádření Microsoftu i AMD, Bulldozer zná a umí s ním pracovat efektivněji. Na následujících stránkách se na to podíváme a srovnáme si to s chováním konkurenčních procesorů Core i7, a to jak ze současné rodiny Sandy Bridge, tak i starší Nehalem, přesněji Lynnfield. Podíváme se na to jak ve Windows 7, tak i Windows 8 a v obou případech budeme zapínat/vypínat Core Parking a sledovat, co to udělá s výkonem.
Protože je toho celkem hodně, rozhodli jsme se použít jen dvě aplikace, každou jiným způsobem: CineBench R11.5 nám bude simulovat aplikaci snažící se zatížit pouze polovinu procesoru, nastavíme jí napevno, že bude používat jen 4 vlákna. Nastavení proběhne přímo v CineBenchi, nikoli ve správci úloh. Bude tak na operačním systému, jak takovou zátěž čtyř intenzivně pracujících vláken rozloží mezi 8 vláken procesoru, ať už jsou to jádra v případě AMD FX, nebo Hyper-Threadová vlákna v případě Intel Core i7.
Následně budeme zkoumat pomocí kódování x264, jak se bude aplikace (a systém) chovat v situaci, kdy použijeme spřažení na čtyři jádra/vlákna, nejprve tak, abychom zatížili všechna fyzická jádra/moduly pouze jedním vláknem, poté první čtyři vlákna, tedy dvě fyzická jádra/moduly. Srovnáme to se situací spuštění aplikace na všech jádrech a ve všech případech si opět budeme hrát s nastavením Core Parkingu.
Nejprve vám nabídneme seznámení s tím, co se děje v jednotlivých operačních systémech v případě, že jsou procesory v klidu:
![Zátěž jader: Bulldozer, Win7, Core Parking ON, idle Zátěž jader: Bulldozer, Win7, Core Parking ON, idle](/data/images/70190.png)
![Zátěž jader: Bulldozer, Win8, Core Parking ON, idle Zátěž jader: Bulldozer, Win8, Core Parking ON, idle](/data/images/70199.png)
Bulldozer v klidu, vlevo Windows 7, vpravo Windows 8, Core Parking ON
Jak sami vidíte, Windows 7 (vlevo) parkovat jádra neumí vůbec. Windows 8 (vpravo) naopak ano a funguje to tak, že první modul (dvě jádra) není parkován, ostatní ano (to proto, že i v klidu se v systému pořád něco děje a přestože toho není mnoho, je potřeba mít jedno jádro pro tyto účely stále vzhůru. Protože ale Bulldozer umí parkovat jen celé moduly, jsou vzhůru jádra dvě.
Mimochodem: pokud Core Parking vypneme, bude to vypadat stejně jako ve Windows 7 s Bulldozerem, pročež vám takové obrázky už dále ukazovat nebudeme.
Co se tedy stane, pokud pustíme CineBench R11.5 nastavený na 4 vlákna? Systém práci rozdistribuuje mezi osm dostupných jader takto (opět vlevo Windows 7, vpravo Windows 8):
![Zátěž jader: Bulldozer, Win7, Core Parking ON, CineBench R11, 4 threads Zátěž jader: Bulldozer, Win7, Core Parking ON, CineBench R11, 4 threads](/data/images/70189.png)
![Zátěž jader: Bulldozer, Win8, Core Parking ON, CineBench R11, 4 threads Zátěž jader: Bulldozer, Win8, Core Parking ON, CineBench R11, 4 threads](/data/images/70198.png)
Bulldozer ve čtyřvláknové zátěži CineBench R11.5, vlevo Windows 7, vpravo Windows 8, Core Parking ON
Zde už vidíme zajímavý rozdíl: systém Windows 7 rozdělil práci nastřídačku mezi všechna jádra, systém Windows 8 ponechal jeden modul zaparkovaný a zátěž více „shluknul“. Co myslíte, která práce byla rychlejší? Než vám to ukážeme, podíváme se ještě na to, co se stane, když v obou systémech Core Parking vypneme.
![Zátěž jader: Bulldozer, Win7, Core Parking OFF, CineBench R11, 4 threads Zátěž jader: Bulldozer, Win7, Core Parking OFF, CineBench R11, 4 threads](/data/images/70184.png)
![Zátěž jader: Bulldozer, Win8, Core Parking OFF, CineBench R11, 4 threads Zátěž jader: Bulldozer, Win8, Core Parking OFF, CineBench R11, 4 threads](/data/images/70194.png)
Bulldozer ve čtyřvláknové zátěži CineBench R11.5, vlevo Windows 7, vpravo Windows 8, Core Parking OFF
Jak vidíte, teď už je to prakticky stejné. Výsledky shrnuje graf:
Vítězem ve výchozím nastavení je o pověstný fous systém Windows 7. Čekali jste to? Možná. Ovšem při vypnutém Core Parkingu se dostává do čela Windows 8, a to už o čtyři fousy. Na Windows 7 se dle očekávání nic nemění, Core Parking na Bulldozer nemá vliv, když systém tento procesor pořádně nechápe.
A co Core i7? Podívejme se opět nejprve na stav v klidu:
![Zátěž jader: Lynnfield, Win7, Core Parking ON, idle Zátěž jader: Lynnfield, Win7, Core Parking ON, idle](/data/images/70206.png)
![Zátěž jader: Lynnfield, Win8, Core Parking ON, idle Zátěž jader: Lynnfield, Win8, Core Parking ON, idle](/data/images/70209.png)
Lynnfield v klidu, vlevo Windows 7, vpravo Windows 8, Core Parking ON
Přestože Windows 7 umí na Core i7 použít Core Parking, vypadá to úplně jinak než ve Windows 8, což je zajímavé. Windows 7 parkuje druhou polovinu jádra vzniklou zdvojením pomocí Hyper-Threadingu, Windows 8 parkuje jádra stejně jako v případě Bulldozeru. Otázkou tedy je, zda to, co dělá Windows 7, je vůbec správně. Něco nám říká, že to moc správně není.
Zátěž CineBenche R11.5 pak vypadá takto:
![Zátěž jader: Lynnfield, Win7, Core Parking ON, CineBench R11, 4 threads Zátěž jader: Lynnfield, Win7, Core Parking ON, CineBench R11, 4 threads](/data/images/70205.png)
![Zátěž jader: Lynnfield, Win8, Core Parking ON, CineBench R11, 4 threads Zátěž jader: Lynnfield, Win8, Core Parking ON, CineBench R11, 4 threads](/data/images/70208.png)
Lynnfield ve čtyřvláknové zátěži CineBench R11.5, vlevo Windows 7, vpravo Windows 8, Core Parking ON
Tohle vypadá skutečně gulášovitě, Windows 7 zaparkují jen jedno vlákno (dokonce ne jádro, ale jen vlákno), Windows 8 parkují jedno celé jádro. S vypnutým Core Parkingem to vypadá podobně jako v případě Bulldozeru, takže vám to ukazovat nebudeme. Ještě se podívejme na současné Core i7 Sandy Bridge, nejprve v klidu:
![Zátěž jader: Sandy Bridge, Win7, Core Parking ON, idle Zátěž jader: Sandy Bridge, Win7, Core Parking ON, idle](/data/images/70211.png)
![Zátěž jader: Sandy Bridge, Win8, Core Parking ON, idle Zátěž jader: Sandy Bridge, Win8, Core Parking ON, idle](/data/images/70213.png)
Sandy Bridge v klidu, vlevo Windows 7, vpravo Windows 8, Core Parking ON
A ve čtyřvláknové zátěži CineBenchem:
![Zátěž jader: Sandy Bridge, Win7, Core Parking ON, CineBench R11, 4 threads Zátěž jader: Sandy Bridge, Win7, Core Parking ON, CineBench R11, 4 threads](/data/images/70210.png)
![Zátěž jader: Sandy Bridge, Win8, Core Parking ON, CineBench R11, 4 threads Zátěž jader: Sandy Bridge, Win8, Core Parking ON, CineBench R11, 4 threads](/data/images/70212.png)
Sandy Bridge ve čtyřvláknové zátěži CineBench R11.5, vlevo Windows 7, vpravo Windows 8, Core Parking ON
Prakticky totéž jako u Lynnfieldu, Windows 7 parkují Hyper-Threadová vlákna, Windows 8 jádra. V zátěži je to také stejné, jen je zaparkované jiné vlákno (podle toho, jak to zrovna vyjde - sebemenší zátěž další činností zaparkované jádro odparkuje a pak se zase nějaké zaparkuje).
Jistě se už těšíte na výsledky, takže vám je hodíme do grafu všechny i s Bulldozerem:
Zajímavě nám to míchá kartami. Core Parking ve Windows 8 možná parkuje logičtěji, ale výkon to každopádně snižuje. Je to pochopitelné: CineBench generuje čtyřvláknovou zátěž a tu je nejlepší rozdělit mezi čtyři fyzická jádra, čemuž Windows 8 brání. Každopádně se ukazuje, že pro výkon je nejlepší Core Parking prostě vypnout.