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:
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):
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.
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:
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:
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:
Sandy Bridge v klidu, vlevo Windows 7, vpravo Windows 8, Core Parking ON
A ve čtyřvláknové zátěži CineBenchem:
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.