Low-end SMP (3) kde nemá smysl

21. 2. 2000
Doba čtení: 4 minuty

Sdílet

Minule jsme si uvedli výkony, kterých dosáhl SMP počítač v některých, přiznejme si však, že pečlivě vybraných, úlohách. Dnes přidáme některé další výsledky. Na rozdíl od minulé části se však podíváme také na aplikace, u kterých nejsou výhody SMP tolik patrné.
Výkon v čistě multithreadových aplikacích

Jako prototyp těchto aplikací můžu uvést klienta společnosti distributed.net. Tato společnost se zabývá využitím výpočetní kapacity počítačů mnoha Internetových uživatelů. Na výše uvedených stránkách si každý může stáhnout klientský software, pro některou z četných podporovaných platforem (samozřejmě včetně Linuxu). Tento klient běží na pozadí a v době kdy počítač nepotřebuje běžet na plný výkon, provádí výpočty pro distributed.net. Po dokončení operací se přes Internet spojí s mateřským serverem, kterému předá výsledky a nahraje si další objem dat k analýze. V současné době běží projekt, který má za cíl pokoření šifry RC5. Uvedený klient může být vedle možnosti získat finanční odměnu vypsanou za „uhádnutí“ správného RC5 klíče, také užitečný k měření výkonu a stability počítače. Navíc software sám pozná je-li spuštěn na SMP počítači a podle toho spustí paralelně jeden nebo více threadů. Díky tomu ho můžeme použít k demonstrování výkonu SMP počítače. Porovnejme tedy výsledky získané spuštěním linuxového klienta verze 2.8006 na jedno a dvouprocesorovém počítači:

1×500 MHz –1,36M klíčů/s –256 klíčů by tedy hledal více než 1680 roků!
2×500 MHz –2,66M klíčů/s –256 klíčů by tedy hledal asi 859 let

Výsledky ukazují, že distributed.net je úloha maximálně vhodná pro SMP počítače. Důvod je prostý. Výpočty probíhají na malém objemu dat. Ztráty způsobené prodlevami přístupu do operační paměti, na pevný disk, čekací stavy sběrnice, apod., jsou vyloučeny. Oba procesory tedy běží na plný výkon. O tom se můžeme přesvědčit příkazem top, jehož výstup začíná:

.....
PID USER PRI NI SIZE RSS SHRE S    %CPU %MEM TIME COMMAND
1756 mpe 19 19  460  460  316 R N 0 49.9 0.7 75:28 dnetc
1757 mpe 19 19  460  460  316 R N 0 49.8 0.7 75:26 dnetc
1833 mpe  1  0 1012 1012 1128 R   0  0.1 1.5  0:01 top
.....

Quake II

Quake II je populární, byť komerční, hra firmy ID Software. Jedná se o poměrně dobře zpracovanou 3D akční hru, ve které je cílem postupně v několika úrovních zabít co nejvíce nepřátel. Když pomineme myšlenkovou plochost námětu, musíme smeknout před vysoce kvalitním zpracováním, které i dnes – tři roky po svém vzniku, vymačkává z počítače poslední kapku výkonu. Ačkoliv můj testovací počítač není konfigurován pro hraní tohoto typu her – což je způsobeno zejména obstarožní grafickou kartou Riva128 – zařadil jsem tento test čistě ze zvědavosti, jak se SMP počítač dokáže vypořádat s těmito typy úloh. Na rozdíl od svého pokračovatele nedokáže druhá verze Quake sama o sobě využít více procesorů. Bylo by tedy jistě zajímavější posoudit výkon nové verze Quake III Arena, která podle annoncí výrobce podporuje SMP. Tu jsem však k dispozici neměl.
Abych tedy zvýšil zatížení systému, spustil jsem ji nikoliv v celoobrazovkovém režimu, ale v okně přímo pod X Window. Navíc jsem přenesl výpočetní zátěž z videokarty na procesor a nastavil rendering hry do režimu softwarového vykreslování. Rozlišení XServeru bylo nastaveno jako 1024×768 v 16-bitové barvě. Potom jsem měnil velikost rozlišení hry ze 320×240 na 640×480 a měřil snímkovou frekvenci zobrazení hry pomocí příkazů:

timedemo 1
map demo2.dm2

Výsledky:

Quake II - graf

Určité zrychlení je patrné, avšak ruku na srdce – není to to, co byste čekali od dvouprocesorového počítače. Proto se nabízí druhá možnost, jak využít výkonu dvou procesorů. Což takhle spustit dva Quaky naráz ? Ačkoliv se to někomu může zdát jako pošetilost, tak je to možné. Ve dvou oknech jsem zapnul dvě instance Quake II a spustil měření výkonu. Na jednom desktopu tak běžely naráz dvě hry. Zatímco na samotném 500 MHz procesoru dosahovala snímková frekvence u obou instancí hodnot 17.6 – 18.1 fps, tak v případě dvou Celeronů 500 už obě dvě běžely shodně na 32 fps. Dokonce je možné obě instance propojit přes TCP/IP a provozovat multiplayer hru na jednom počítači! Na pozadí Vám pak při tom může vyhrávat třeba MP3 skladba a grafický ukazatel vytížení procesorů v liště Windowmakeru ukazuje 92%. Tomu říkám multitasking v praxi. Zkuste o tom vyprávět pravověrným quakerům používajícím Windows – puknou závistí :-)

bitcoin_skoleni

Jak je to s výkonem při „běžné“ práci ?

Až dosud jsem uváděl pouze případy výpočetně náročných úloh, které byly konfigurovány tak, aby umožňovaly paralelní zpracování dat. Na těchto úlohách se pochopitelně projeví SMP výkon především. V reálném světě však většinou používáme aplikace jiné. Spousta uživatelů na své pracovní stanici pracuje s programy jako StarOffice, Netscape nebo Gimp. Na pozadí jim při tom běží maximálně nějaký ten MP3 přehrávač. Vedle toho mají akorát v liště WindowMakeru nebo Gnome spuštěný nějaký ten ukazatel vytížení procesoru a paměti. Základní otázkou potom je, zda-li se v těchto případech nějak urychlí počítač přidáním druhého procesoru.
Popravdě řečeno, pokud nespustíte nějakou zvláště náročnou úlohu na pozadí, tak nemáte šanci poznat, sedíte-li u počítače s jedním nebo se dvěma 500 MHz procesory.
Ačkoliv by se řeklo, že když je jádro Linuxu dostatečně paralelizováno a více běžících úloh je tedy rozvrženo rovnoměrně na oba procesory, musí nutně dojít ke zvýšení výkonu – není tomu tak. Musíme si uvědomit, že zmíněné úlohy nejsou nikterak výkonově náročné. Snadno se lze přesvědčit, že několik threadů přehrávače MP3 souborů XMMS nespotřebuje dohromady ani 5% strojového času na CPU 500 MHz. Obdobně většina z oněch efektních systémových monitorů, ze kterých máme pocit, že nám musejí krást megahertzy doslova po stovkách je ve skutečnosti natolik skromná, že jejich vliv na zátěž systému lze jen obtížně zjistit.
Zde je nutné uvědomit si jednu důležitou skutečnost. Negativní vliv většiny běžných aplikací na výkon počítače nespočívá primárně v tom, že by tyto úlohy byly nějak výpočetně náročné, ale spíše v tom, že jejich rezidentní část zabírá místo v systémové paměti. Její rozšíření, je také nejsnazší cestou k výkonu v těchto úlohách. Je to často i efektivnější než upgrade na SMP.

Autor článku