MOSIX - Počítejte rychleji!
Michal Ludvig <michal@logix.cz> (c) 2001
V minulém díle jsme si na příkladu "ze života" ukázali, jak výpočetní cluster funguje a na jaké problémy při jeho provozu můžeme narazit. Dnes vám již poradím, jak si nainstalovat cluster vlastní.
Pokud jste vykonali, co jsem vám na konci minulého dílu uložil za domácí úkol, tak teď máte k dispozici několik sesíťovaných počítačů. Proto, abychom mohli používat Mosix, si budeme muset přeložit vlastní jádro. Každá verze Mosixu je pevně svázána s určitou verzí linuxového jádra a pro úspěšné používání byste měli používat stejně nakonfigurovaná jádra stejných verzí na všech uzlech. Já v současné době používám kernel 2.4.9 s Mosixem 1.3.0 a na těchto verzích vám také popíšu konfiguraci.
Instalace jádra
Nejprve si samozřejmě musíme obstarat zdrojáky kernelu (například z Kernel.org) a odpovídající verzi Mosixu z Mosix.org (download najdeme v sekci Distribution). Zdrojáky kernelu i Mosixu rozbalíme například v adresáři /tmp, kde tímto získáme podadresáře linux a MOSIX-1.3.0. Nyní máme na výběr dvě možnosti - buď instalovat Mosix automaticky pomocí skriptu MOSIX-1.3.0/mosix.install, nebo ručně, což je větší zábava a navíc tak můžeme udělat více chyb. Takže zvolíme druhou možnost, přejdeme do adresáře /tmp/linux a zadáme příkaz
patch -p1 < ../MOSIX-1.3.0/patches.2.4.9
čímž získáme modifikovaný kernel-tree toužící po kompilaci. Nejprve naše budoucí jádro samozřejmě musíme nakonfigurovat, což zajistíme příkazem make menuconfig (případně make xconfig, nebo postaru make config - podle toho, jak to komu nejvíce vyhovuje). V menu nejspíš ihned zaregistrujeme novou položku MOSIX, která umožňuje přístup k několika dalším volbám. Stručně si je popíšeme spolu s doporučením, zda volbu zapnout [+], nebo ne [-]:
- [+] MOSIX process migration support
- Pokud chcete procesům umožnit migraci mezi uzly zaškrtněte tuto volbu. Pokud se však rozhodnete, že migraci povolit nechcete, nemá cenu dál konfigurovat kernel s podporou Mosixu ani číst tento článek. S případnými odpadlíky se tedy v tomto okamžiku loučím.
- [-] Support clusters with a complex network topology
- V případě, že všechny uzly vašeho clusteru jsou připojeny k jedinému switchi, tak tuto volbu nepotřebujete. Pokud však používáte uzly s různou rychlostí připojení, výrazně odlišným síťovým hardware nebo jinou "komplexní" topologii, zaškrtněte tuto volbu. Všechny uzly vašeho clusteru však v tomto bodě musí být nakonfigurovány stejně.
- [-] MOSIX Kernel Debugger
- Pokud vám některý uzel spadne a vy chcete zjistit, kde a proč se tak stalo, zapněte tuto volbu.
- [+] Stricter security on MOSIX ports
- Mosix ke komunikaci mezi uzly samozřejmě používá několik TCP a UDP portů. Pokud chcete zajistit vyšší bezpečnost (převážně u uzlů přístupných zvnějšku clusteru), je tato volba určena pro vás.
- [3] Level of process-identity disclosure
- Pokud proces odmigruje ze svého home-node, je možné o něm na jeho aktuálním uzlu zjistit několik údajů. Čím vyšší hodnotu zde nastavíte, tím více údajů budete mít na hostitelském uzlu k dispozici. Pokud vám nebrání paranoia, zvolte nejvyšší hodnotu, tedy trojku.
- [+] Create the kernel with a "-mosix" extension
- Pokud chcete, aby verze kernelu byla 2.4.9-mosix místo 2.4.9, zapněte tuto volbu.
- [+] Direct File-System Access
- DFSA umožňuje odmigrovanému procesu přistupovat ke sdílenému filesystému lokálně na aktuálním uzlu. V opačném případě se všechny IO-syscally musí forwardovat na home-node, což je zdlouhavé a navíc to home-node odrazuje od migrací (pokud proces vykonává spoustu přístupů k souborům, je režie s tím spojená tak vysoká, že je výhodnější proces nechat běžet "doma"). Všechny uzly musí být v tomto i následujícím bodě nakonfigurovány stejně.
- [+] MOSIX File-System
- MFS je filesystem zajišťující konzistenci dat mezi uzly a zároveň jeden ze dvou FS podporujících DFSA. Každý node si může namountovat MFS, díky čemuž bude mít přístup k téměř všem souborům všech aktivních uzlů.
- [+] Poll/Select exceptions on pipes
- Jestliže vaše programy používají roury (pipe) a chtějí být upozorňovány na skutečnost, že z nich již nikdo nečte, zapněte tuto volbu.
Zbytek kernelu nakonfigurujte podle svých zvyklostí a potřeb a přeložte. Měli byste použít gcc 2.91.66 (neboli egcs 1.1.2), který v případě RedHatu bývá nainstalován jako kgcc, protože jiné verze mohou generovat chybný kód. Já osobně však používám gcc 2.95.3 a nezaznamenal jsem žádné problémy. K hotovému jádru dále překompilujte patřičné moduly, nainstalujte je a nové jádro nabootujte.
Instalace utilit
Přejděte do adresáře /tmp/MOSIX-1.3.0, vytvořte v něm podadresář user a příkazem
tar xvf user.tar -C user
do něj rozbalte zdrojové soubory utilit. Nyní přejděte do právě vytvořeného adresáře user a editujte soubor Rules.make tak, aby u proměnné CFLAGS bylo místo původního -I/usr/src/linux skutečné umístění zdrojáků mosix-kernelu, tedy -I/tmp/linux. Nyní by příkazem make mělo dojít k bezchybnému překompilování všeho potřebného. Příkazem make install vytvořené programy včetně dokumentace nainstalujete a dále pomocí
tar xvf manuals.tar -C/usr/man
rozbalíte na své místo manuálové stránky ke konfiguračním souborům, DFSA a MFS. Tím je základní instalace prakticky dokončena. Za domácí úkol toto proveďte na všech strojích budoucího clusteru, abychom si ho příště již mohli nakonfigurovat a spustit.