PC Clustery

 

 

 

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. Sem by patřily například DNS, WEB, mail servery atd.

 

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.

 

Jak to funguje:

 

Abychom mohli efektivně využívat výpočetní cluster, potřebujeme mít 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 udělat překlad nějaké knížky - můžete jí buďto přeložit celou sami, nebo práci rozdělit a dát jednu kapitolu jedné překladatelce. Celkový čas na přeložení celé knihy bude pochopitelně kratší, protože kapitoly se budou překládat zároveň. Každou překladatelku můžeme po vzoru počítačové terminologie nazývat node (česky uzel). Protože zadal práci nám, jsme master node, pro zadanou úlohu pak home node, o nějakých překladatelká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 překladatelek 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 knížce můžeme nakonec mít šest, ale překladatelky máme jen čtyři. I v případě, že jednu zpracujeme sami (ano, i master node musí někdy pracovat), budeme se šestou snažit vnutit některé z překladatelek. 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.

 

Výpadek uzlu

Pokud si naše překladatelka zlomí nohu, není to taková tragédie, jako kdyby si vypíchla obě oči. V takovém případě by byla nucena polopřeložaný text operativně odmigrovat k jiné překladatelce 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ši překladatelku 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řeložila znovu.

.

 

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 překladatelské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. Příklad tohoto je Linux s podporou MOSIX v jádře.

 

 

Příklady clusterových systémů:

 

OpenMosix Cluster

Je modifikace Linuxového kernelu, která se snaží clustering co nejvíce zjednodušit. Nadstavba OpenMosix přebírá kontrolu nad procesy ve chvíli volání například fork(), což umožňuje využití této technologie bez nutnosti větší úpravy zdrojového kódu. Pouhým štěpením na procesy lze dosáhnou vyššího výkonu migrováním těchto vláken na okolní nody.

 

Beowulf Cluster

Projekt Beowulf začal v roce 1994 na pracovišti CESDIS (Center of Excellence in Space Data and Information Sciences), které je součástí Goardova centra vesmírných letů NASA. CESDIS bylo sponzorováno z projektu ESS (Earth and Space Sciences) k jehož úkolům patří i výzkum masivně paralelních počítačů. Thomas Sterling a Donald Becker, dva zaměstnanci CESDIS, od konce roku 1993 pracovali na návrhu paralelního počítače postaveného pouze z běžně dostupných (levných) komponent (Commodity of the Shelf; zkr. COTS) a volně šiřitelného softwaru. Výsledkem jejich snahy byl cluster (multipočítač) složený ze šestnácti PC s procesory 486DX4 propojených upraveným 10Mb „vícekanálovým“ Ethernetem. Stroj a s ním i celý projekt byli pojmenováni podle hrdiny anglosaského eposu ze šestého století: Beowulf.

 

Zpráva o úspěchu projektu se rychle rozšířila skrz NASA do akademických a vědeckých kruhů a projekt se nejen rozrůstal, ale získal i mnoho následovníků. Pro počítače tohoto druhu se vžilo označení „Beowulf Class Cluster Computer“. S nárůstem výkonu a schopností počítačů PC a operačního systému Linux, který na Beowulf clusterech dominuje (místo něj se v poslední době objevují i jiné systémy, jako FreeBSD) se odpovídajícím způsobem posunují i možnosti počítačů typu Beowulf a stávají se konkurencí pro malosériové superpočítače.

 

 

Parallel Virtual Machine (PVM)

Parallel Virtual Machine (PVM) je systém, který umožňuje programátorům pohlížet na heterogenní soubor unixových strojů jako na jednolitý paralelní počítač. PVM pracuje na jednoduchém, ale funkčně kompletním modelu předávání zpráv (message passing model).

 

PVM vzniklo z hladu po systému zastřešujícím heterogenní síťové prostředí. Je to sada softwarových nástrojů a programátorských knihoven, která umožňuje a podporuje provoz paralelní aplikace na obecně nestejných počítačích propojených do sítě.

 

Základem PVM je démon pvmd3, který běží na každém počítači. Všechny nody se spuštěným démonem pvmd3 mohou dohromady vytvářet virtuální stroj. Druhou částí PVM je knihovna, poskytující rozhraní pro paralelní operace. V současné době jsou podporovány jazyky C, C++ a Fortran.

 

 

Výpočetní cluster Columbia, který je ve vlastnictví NASA:

 

 

 

 

Cluster na katedře fyziky v Hong Kongské universitě vědy a techniky: