Published on 2001-9-18 at root.cz

MOSIX - Počítejte rychleji!

Michal Ludvig <michal@logix.cz> (c) 2001

Existují aplikace, kde v první řadě záleží na hrubé výpočetní síle. Ať už chcete hledat mimozemšťany v projektu Seti@Home, luštit cizí hesla jedním z nepřeberného množství k tomuto účelu vytvořených programů, či simulovat následky výbuchu atomové bomby nad některým velkým městem, tak se vám může hodit hóóóódně silný počítač. Pokud vám ale kapesné nestačí na zakoupení mnohaprocesorového SuperUltra Sextium 8, tak se zkuste porozhlédnout, zdali se ve vašem okolí nevyskytuje pár nevyužitých strojů z nichž by bylo možné postavit výpočetní cluster.

Co je to cluster

Česky je možné slovo cluster přeložit jako seskupení, nebo shluk. Ve výpočetní technice se tento termín používá pro takovou konfiguraci několika počítačů, která se navenek tváří a chová jako jeden jediný stroj.
Clustery se v zásadě dělí na tyto dva typy:

High-availability clusters (vysoce dostupné clustery)
Používají se v případě, kdy je nezbytné zajistit nepřetržitý provoz určité služby bez ohledu na možné hardwarové či softwarové problémy, které mohou potkat jednotlivé stroje. Tímto typem se zde nebudeme zabývat. Více informací můžete získat například z Linux Journalu, nebo přímo na Linux-HA.
Computational clusters (výpočetní clustery)
Použití tohoto typu jsem naznačil již v úvodu. V zásadě jde o to, že za relativně málo peněz získáte poměrně slušný výpočetní výkon. V tomto seriálu vám ukážu, jak na to. Samozřejmě za použití Linuxu.

Jak to funguje

Abyste mohli efektivně využívat výpočetní cluster, potřebujete mít nutkání vyřešit takovou úlohu, kterou lze dobře paralelizovat, tedy rozdělit na spoustu malých úloh podobného typu, které je možné zpracovávat relativně samostatně, nezávisle jednu na druhé. Je to podobné, jako kdybyste měli provést jazykovou korekturu obsáhlé kuchařky - můžete jí buďto přečíst celou sami (to je ta celá úloha), nebo si práci můžete rozdělit zvlášť na čtení receptů na polévky, zvlášť na hlavní jídla bez masa, zvlášť na hlavní jídla s masem a nakonec nezapomenete opravit ani kapitolu o moučníkách. Bohužel si tím moc nepomůžete, protože opět musíte přečíst celou kuchařku. Naštěstí však máte k dispozici cluster jazykových korektorek a tak každé z nich můžete poslat (migrovat) jednu kapitolu. Celkový čas na opravení celé knihy bude pochopitelně kratší, protože kapitoly "se budou číst" zároveň. V modelovém případě čtyř kapitol a čtyř korektorek to stihnete za čtvrtinu původního času. Každou korektorku můžeme po vzoru počítačové terminologie nazývat node (česky uzel). Vydavatel však zadal práci nám (jsme master node, a pro zadanou úlohu pak home node), takže o nějakých korektorkách nemusí mít vůbec tušení. Stejně tak to chodí v případě reálného clusteru, kdy všechny úlohy zadáváme jednomu master nodu, který je potom rozešle (migruje, či jinak distribuuje) ostatním uzlům.
 
V praxi se však můžete setkat s následujícími problémy:

Rozdílná rychlost uzlů
Jedna z korektorek může mít kurz rychločtení, zatímco druhá si zrovna rozšlápla své brýle s osmi dioptriemi, a protože teď musí číst lupou, jde jí to samozřejmě pomalu.
Rozdílná zátěž uzlů
Kapitol v kuchařce můžeme nakonec mít šest, ale korektorky máme jen čtyři. I v případě, že jednu zpracujeme sami (ano, i master node musí někdy pracovat), tak se šestou budeme snažit vnutit některé z korektorek. Ta rázem bude mít dvojnásobnou zátěž oproti ostatním.
Rozdílná rychlost komunikace
Samozřejmě je rozdíl mezi spoluprací s korektorkou, která bydlí ve stejném domě jako my a práci jí můžeme donést osobně, a s jinou, která bydlí v Austrálii a práci nepřijímá jinak než dodanou poštovním holubem. Situace se může poněkud zkomplikovat, pokud ta australská je vyjímečně rychlá a odvádí mimořádně kvalitní práci, zatimco ta, která bydlí o dvě patra pod námi je ona již zmíněná s rozšláplými brýlemi a lupou. V takovém případě nás čeká poměrně složitá analýza, abychom zjistili, kam se vyplatí ten který úkol odeslat.
Výpadek uzlu
Pokud si naše korektorka zlomí nohu, není to taková tragédie, jako kdyby si vypíchla obě oči. V takovém případě by byla nucena poloopravený text operativně odmigrovat k jiné korektorce z našeho clusteru. Kterou vybere záleží zejména na předchozích třech faktorech. Ať už je vybrána kterákoliv, tak ta práci převezme a bude v ní pokračovat.
Větší problém by nastal, kdyby naší korektorku odnesli mimozemšťani. Tím bychom o její (možná již téměř hotovou) práci přišli a museli bychom pověřit některou ze zbývajících kolegyň, aby to přečetla znovu.
Někdy se bohužel může stát, že unesená korektorka opravovala originál rukopisu od kterého nemáme žádnou kopii, takže celá její práce je ztracena a budeme muset vydat kuchařku bez kapitoly o moučnících. V některých úlohách toto kupodivu nevadí, obvykle však ano.

Dále je vhodné výpočetní clustery rozdělit na dva typy, podle způsobu, jakým se jeho uzly dělí o práci.

Cluster na úrovni aplikace
Budete mít aplikaci, kde s pomocí speciálních funkcí (např. z knihovny PVM - Parallel Virtual Machine) budete řídit distribuci a komunikaci jednotlivých úloh sami. To je právě případ našeho korektorského clusteru.
Cluster na úrovni operačního systému
Nebudete se o nic starat, jednoduše se paralelizujete a budete doufat, že nejvhodnější rozmístění po uzlech za vás zařídí váš OS. Pokud to bude Linux s podporou Mosixu v jádře, tak máte šanci, že k tomu opravdu dojde. V dalším textu se již budeme zabývat jen tímto typem.

Za domácí úkol si připravte síť - pro začátek by mohlo stačit pět počítačů. Na každý z nich nainstalujte Linux v takové distribuci a verzi, která umí pracovat s jádrem řady 2.4. Pokud možno je propojte minimálně 100Mbps ethernetem a nakonfigurujte na nich síť tak, aby na sebe vzájemně viděli. V příštím díle si ukážeme, jak z těchto počítačů vytvořit výpočetní cluster.

Place for your feedback...
No messages entered so far.