Dvoujádrový procesor: mýtus silnější než realita

Když jsem před rokem a půl napsal článek s příhodným názvem „Dual-core: proč nemůže uspět“, byl jsem mnohými označen za skeptika. Nevěřil jsem tomu, že se dvoujádrové procesory dokážou v blízké budoucnosti významně prosadit. Od té doby už nějaký ten čas uplynul, změnilo se ale za tu dobu něco? Má už v dnešní době nákup dvoujádrového procesoru význam?
Kapitoly článku

A co víc aplikací současně? Multitasking

Jedním z argumentů zastánců dvoujádrových procesorů je multitasking. Ten totiž také dokáže využít výhod dvou jader a to i v situaci, kdy aplikace nejsou multithreaded – dva programy mohou být takto spuštěny současně namísto toho, aby se o výpočetní výkon procesoru musely podělit (střídat se). U jednojádrového modelu operační systém střídá na jednom jádru na základně stanovených priorit (o tom dále) všechny programy. Na vícejádrových počítačích může program zpracovávat libovolné z jader, zatímco to druhé mezi tím provádí program jiný.

Agrumentem zastánců dual-core je, že více aplikací spuštěných současně se na dual-core chová mnohem plynuleji. Když se ale budete trochu zajímat o podrobnosti, zjistíte, že velká část z těchto uživatelů vlastně ani moc nemultitaskuje a nebo když už, neumí používat ani základní nástroj konfigurace – priority.

Na obrázku vidíte jednu z absurdnějších situací – otevřených cca třicet oken Internet Exploreru s různými webovými stránkami. Všimněte si, že tyto okna, přestože se v nich často nachází animace ve formátu flash, nedosahují příliš vysokého zatížení – běžně téměř nula procent. Místy si občas nějaké to okno čas vyžádá, ale nikdy nic významného.

Ještě jeden snímek. Viditelný efekt otevření tolika oken je především velké množství zabrané paměti RAM. Vytížení procesoru bylo v průměru kolem dvaceti až třiceti procent. Špičky v historii využití reprezentují činnost uživatele – přepínání mezi okny, pohyb oken atp. V takových situacích se zatížení krátkodobě pohybuje kolem 50 až 100 %.

Myslíte si, že multitasking takového charakteru může nějak omezovat vaší práci? Schválně si to na svém počítači vyzkoušejte a uvidíte. Tipuji, že mnoho z vás uzná, že než rychlý procesor je zapotřebí hodně paměti RAM (což poznáte snadno, když počítač začne „hrabat“ na disk). Ono totiž když se všechno vejde do paměti, práce je mnohem pohodlnější. Omezí se tím totiž přístupy na disk, které významně zdržují.

Tak například první spouštění textového editoru Microsoft Word trvalo v mém testu 2,6 vteřiny (měřeno na stopkách). Druhé spuštění trvalo už jen jednu vteřinu. A to právě proto, že při druhém spuštění už byly některé soubory načteny v paměti RAM. První spuštění je limitováno výkonem pevného disku, ostatní části počítače v ten okamžik čekají.

Čím více budete mít současně spuštěných aplikací, tím více budete potřebovat paměti. Když jí nebude dostatek, Windows jednoduše omezí bufferování souborů, tj. kdybych měl „zaplácnuto“ hodně MB dalšími programy (intenzivně bych multitaskoval), bude se Word spouštět vždycky stejně pomalu jako při prvním spuštění. A to bez ohledu na výkon procesoru.

Jistou roli samozřejmě hraje i pevný disk – čím rychlejší, tím dříve dojde k prvnímu spuštění a tím rychleji se v případě zaplácnutí paměti budou spouštět další programy.

O nějakém zatížení procesoru nelze u aplikací typu Internet Explorer, Word, PowerPoint a podobných příliš hovořit. Ty totiž většinu času pouze čekají na reakci uživatele a jejich požadavek na výkon je téměř nula. Jak už jsem demonstroval, ani třicet oken Internet Exploreru nedokáže zatížit procesor tak, aby vás to mohlo jakkoli zdržovat. Ne nadarmo se říká, že na kancelářskou práci bez problémů stačí i Pentium III na 500 MHz.

To, že při pohybování okny, při zapínání programů a při jiných podobných situacích vyskočí zátěž procesoru na 100 %, je úplně normální – počítač využívá veškerého dostupného výkonu tak, aby jím prováděná úloha byla provedena co nejdřív. Mimochodem, v tomto vám dual-core příliš nepomůže, protože start programů většinou není onou úlohou, kterou by mělo cenu převádět na více vláken – přínosy by tam byly menší než náklady. Dual-core tedy při startu využije jediné z jader, a proto bude celá operace trvat stejně dlouho, jako na jednojádrovém modelu.

Na tomto místě se hodí zmínit ještě jednu zajímavost. Aplikace se ani při mnoha nízkozátěžových programech běžících na pozadí nebudou spouštět pomaleji, protože Windows standardně přiděluje „focusované“ aplikaci (tj. takové, kterou právě ovládáte) více času procesoru. Když tedy budete mít spuštěné dva programy s normální prioritou, ten na pozadí dostane o trochu méně výpočetního času procesoru. V multitaskingu to pak znamená, že onen špičkový požadavek na výkon při otvírání nových programů či manipulování s již otevřenými bude proveden přednostně a zbylé aplikace chvíli počkají.

Mimochodem, znáte situaci, kdy Windows z ničeho nic na pár vteřin zamrznou a třeba nefunguje lišta s tlačítkem Start? Jedná se patrně o nějakou vnitřní chybu návrhu operačního systému způsobující zacyklení (deadlock) nebo čekání na nějaký hardware. Pokud se domníváte, že před tímto vás dual-core ochrání, musím vás zklamat – neochrání. I pro mě to byl vcelku šok, když jsem to zjistil.

Zátěžové aplikace na pozadí – nebuďme líní

Mnohem významnějším argumentem pro použití dual-core je multitasking se zátěžovou aplikací. Ten nastává, když chceme spustit nějaký výpočetně náročný program a zároveň chceme normálně pracovat. Příkladem takového programu může být například enkódování MP3jek pomocí LAME. LAME je při nastavení vysoké kvality komprese poměrně náročný a jedna MP3ka mu může trvat až několik minut.

Zátěžová aplikace si začne nárokovat 100 % výkonu procesoru a na ostatní úlohy už ho tedy příliš nezbude. Dvoujádrový procesor v této situaci může fungovat mnohem lépe – LAME na něm zatíží jedno jádro, ale druhé zbude pro všechny vaše úkoly! Zátěžová aplikace tak téměř nesníží pocit vysokého komfortu, protože dvoujádrový procesor se při spuštěné zátěžové aplikaci na pozadí bude chovat stejně, jako procesor jednojádrový bez jakéhokoli zatížení.

Myslíte si, že něco takového není na jednojádrovém modelu možné? Omyl je pravdou. Stačí používat priority procesu.

U věcí jako komprese audia, komprese videa, hledání UFOnů či jiných podobných záležitostí nám obvykle nevadí, když skončí o pár vteřin či minut později. Ostatně nějaká ta minuta se v hodinách úpravy videa ztratí.

Proto je možné bez problémů využít priorit. Mnou provedený test zkoumal, nakolik kódování MP3ky na pozadí pomocí LAME ovlivní kompresi dat WinRARem. Pokud má LAME nastavenu vysokou prioritu, komprese zcela stojí a rozeběhne se až po skončení kódování. Pokud má ale prioritu malou, přednost dostane komprese a naopak LAME stojí.

Celkový čas obou operací je samozřejmě stejný (oněch 114 vteřin), jde o to, že jedna z úloh má pro nás vyšší důležitost, a proto chceme, aby byla dokončena dříve. Dual-core by v této situaci pomohl v tom, že obě úlohy by byly dokončeny ve stejném čase, jako kdyby běžely samostatné – tj. v tomto modelovém příkladu by obě skončily za 57 vteřin (max(57s, 57s)) namísto 114.

Pomocí priorit je tedy možné snadno vyřešit práci v situaci, kdy na pozadí běží nějaká výpočetně náročná úloha, u které pro vás není doba skončení vysloveně klíčová – prostě jí přidělíte malou prioritu a je to. Sice skončí později, ale vadí vám to natolik, že připlatíte mnoho tisíc na dvoujádrový procesor?

Setkal jsem se už s mnoha názory na priority. Jeden z těch radikálnějších říká, že „přepínání priorit je pro lamy“ (rozumějte amatéry). Autoři těchto ci(n)tátů si bohužel pro ně neuvědomují jednu věc – dual-core dokáže zvýšit výkon při více současně spuštěných aplikacích (tj. v tomto modelovém příkladu mohou jak LAME, tak WinRAR pracovat v jednom okamžiku a bez omezení výkonu), nicméně neochrání vás před manuálním zásahem do priorit. Proč? Asi se shodneme, že vícevláknové aplikace jsou něco, na co majitelé dvoujádrových procesorů čekají jako na smilování. A teď uvažujme, co se asi tak stane, když ona aplikace na pozadí bude vícevláknová. Správně – zatíží obě jádra, a tudíž pro multitaskování už žádný výkon nezbude. Dual-core vás tedy uchrání před nastavováním priorit pouze v situaci, kdy máte na pozadí spuštěnu jednu jedinou jednovláknovou aplikaci. Pokud je aplikace vícevláknová nebo jsou spuštěny dvě, multitasking bude bez zásahu do priorit stejně trhaný jako u jednojádrového procesoru.



Řada programů nabízí nastavení nízké priority ve svém uživatelském rozhraní (případně to mají již přednastaveno) anebo pomocí příkazové řádky.

Jedním z velkých omylů ohledně dual-core a multitaskingu také je, že vám umožní zároveň vypalovat DVDčka a hrát počítačovou hru. Na něco takového můžete rovnou zapomenout, protože limitem je zde disk. Při rychlosti 12x jsou data vypalována až cca 16 MB/s, což je na běžný 7200 ot./min disk poměrně slušný záhul. Špičková rychlost čtení dnešních disků je asi 80 až 40 MB/s, ale to pouze sekvenčně. Když nemáte vypalovaná data perfektně defragmentovaná nebo na disk přistupuje ještě nějaká aplikace (např. hra), budete mít velké potíže. Podobné to je i ve spoustě dalších multitaskovacích scénářů.

Zítra se podíváme na výsledky celé řady praktických testů, ať už v multimediálních aplikacích či herních testech.

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,