Hydra
Z NTI
[editovat] Výpočetní cluster Hydra
Hydra je výpočetní cluster fakulty Mechatroniky, Technické univerzity v Liberci
Obsah |
[editovat] Technické informace
- 12 uzlů Dell PowerEdge 1950 (též frontend)
- 2x Intel Xeon 5140 2.33GHz/4MB 1333FSB (2 jádra)
- 4GB RAM 667MHz (4x1HB)
- 80GB SATA2, 7200 ot./min, hot plug
- 2x NIC 1 Gbps, Broadcom NetXtreme II 5708 Gigabit Ethernet NIC
- DVD ROM
- Celkem: 24 CPU, 48 jader, 48GB RAM, 960GB HDD
- 17 uzlů Sun Fire V20z (1U)
- 2x AMD Opteron 252, 2600 MHz (1 jádro)
- 4 GB RAM
- 73 GB HDD, 10025 ot./min, Fujitsu MAT3073NC
- 1x Dual Ultra320 SCSI, LSI Logic 53c1030 PCI-X
- 2x NIC 1 Gbps, Broadcom BCM5704
- DVD-ROM, FDD
- Celkem: 34 CPU (34 jader), 68 GB RAM, 1.2 TB HDD
- Rocks Clusters 5.2.2
- Linux CentOS 5.4
- 64 bitový systém
- binárně kompatibilní s Red Hat Enterprise Linux 5
- propojovací síť 1 Gbps
- přímá 1 Gbps konektivita do Liane, resp. Cesnetu
[editovat] Jak se připojit
K Hydře (hydra.kai.tul.cz) je možné se přihlásit pomocí SSH. Z MS Windows použijte klienta PuTTY (případně WinSCP pro nahrávání souborů na cluster). Pokud nechce při každém přihlášení zadávat svoje heslo, použijte připojení pomocí veřejného klíče, viz. návod na www.howtoforge.com.
Uživatelské jméno jmeno.primeni samozřejmě musíte nahradit vaším skutečným uživatelským jménem.
- Informace o stavu clusteru: http://hydra.kai.tul.cz/ganglia/
Při prvním přihlášení se automaticky vytváří dvojice klíčů, která umožňuje přístup z frontendu (řídící uzel clusteru) na nody (podřízené počítače pro výpočty). Veřejný klíč je automaticky uložen do ~/.ssh/authorized_keys. Pokud použijete prázdnou heslovou frázi, budete se z frontendu Hydry moci přihlašovat na uzly bez zadání hesla stejně jako bez zadávání hesla na uzlech spouštět procesy pomocí příkazu cluster-fork.
Domácí adresáře uživatelů jsou umístěny na frontendu Hydry (tj. hydra.kai.tul.cz). Tento adresář se sdílí mezi všemi nody, takže pokud se na některý přihlásíte, budete mít všude k dispozici stejná data. Nody se jmenují compute-0-0 až compute-0-10 a compute-1-0 až compute-1-16 (viz stav clusteru výše).
[editovat] Jak programovat a spouštět distribuované aplikace
Distribuované aplikace lze na Hydře programovat a spouštět mnoha způsoby. V následujícím příkladu bude demonstrováno použití knihovny MPI a aplikace bude naprogramována v jazyce C.
[editovat] Makefile
Než vůbec něco zkompilujeme, tak si musíme vytvořit soubor Makefile, který se nám bude starat o kompilování a linkování programu:
CC=gcc # prekladac
MPICC=/opt/openmpi/bin/mpicc
all: hello # program, ktery chceme vytvorit
hello: hello.o # linkovani naseho programu
${CC} -o hello `${MPICC} -showme:link` hello.o
hello.o: hello.c # kompilace naseho programu
${CC} -c `${MPICC} -showme:compile` hello.c
clean: # vycisteni nepotrebneho smeti
rm -f hello *.o *~
[editovat] Hello Word
Zdrojový kód (hello.c) nejjednodušší programu používající MPI by mohl vypadat takto:
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
int main(int argc, char *argv[])
{
int numprocs, rank, namelen;
char *hostname = getenv("HOSTNAME");
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Get_processor_name(processor_name, &namelen);
printf("Processor %d on %s out of %d from %s\n", rank, processor_name, numprocs, hostname);
MPI_Finalize();
return EXIT_SUCCESS;
}
[editovat] Spouštění aplikací
Nakonec budeme potřebovat skript, který nám to všechno spustí:
#!/bin/bash MPICC=/opt/openmpi/bin/mpicc $MPIRUN -np 4 -machinefile ~/devel/examples/01/comp_list ~/devel/examples/01/hello
a soubor se seznamem uzlů /devel/examples/01/comp_list:
compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local
Pokud vše funguje správně, tak by se na konzoli mělo vypsat něco takového:
Processor 2 on compute-0-2.local out of 4 from (null) Processor 0 on compute-0-0.local out of 4 from (null) Processor 1 on compute-0-1.local out of 4 from (null) Processor 3 on compute-0-3.local out of 4 from (null)
Takto sice úlohu spouštět lze, ale není to ze systémového hlediska správné. Zkusme si představit, že naše úloha je skutečně hodně výpočetně náročná a zatíží celý výpočetní cluster na celý týden. No a teď si zkuste představit, že nejste samotní, kdo chce spouštět podobně výpočetně náročnou úlohu. Kdyby všichni spouštěli svoje úlohy nazdařbůh, tak by byl výpočetní cluster přetěžován, nebo by nebyl využíván efektivně. Z toho důvodu je vhodné pouštět vaše úlohy pomocí tzv. Grid Enginu.
[editovat] Grid Engine
Všechny úlohy se spouštějí přes frontu úloh. To znamená, že se úloha nejprve vloží do fronty úloh čekajících na spuštění a když na úlohu přijde řada (cluster přestane být vytížený), tak ji Grid Engine spustí.
Vaši úlohu přidáme do fronty tímto příkazem:
qsub -b yes script.sh
Když chceme vědět, co se s úlohami, frontami a jednotlivými uzly děje, tak si spustíme následující příkaz:
qstat -f
Když je úloha ukončena, tak její výsledek nalezneme ve 4 souborech ve vašem domovském adresáři:
$HOME/script.sh.o<cislo_ulohy> # stdout ulohy $HOME/script.sh.e<cislo_ulohy> # stderr ulohy $HOME/script.sh.po<cislo_ulohy> # stdout Grid Enginu $HOME/script.sh.pe<cislo_ulohy> # stderr Grid Enginu
[editovat] Administrace Hydry
[editovat] Správci Hydry
[editovat] Seznam důležitých odkazů
- http://hydra.kai.tul.cz/ganglia/ – stav clusteru
- http://hydra.kai.tul.cz/roll-documentation/ – nainstalované doplňky
- http://www.rocksclusters.org/wordpress/?page_id=4 – uživatelské příručky
[editovat] Přidávání uživatelů
Uživatele je nutné nejprve přidat na frontendu například pomocí:
useradd username passwd username
Bezpečné heslo lze uživateli vygenerovat například pomocí příkazu pwgen:
pwgen -1 8 1
O vlastní rozdistribuování uživatelských účtů na všechny uzly se postará příkaz:
rocks-user-sync
Když se potom uživatel poprvé přihlásí, tak se mu vytvoří pár veřejného a tajného klíče pro ssh. Uživatel může zadat, do kterého adresáře se mají klíče umístit a je požádán o zadání hesla ke klíčům. Uživatel může všechny dotazy odbít stisknutím klávesy Enter. Klíče pak budou uloženy do implicitního adresáře $HOME/.ssh a klíče budou bez hesla.
[editovat] Instalování RPM balíků
TODO
[editovat] Seznam nainstalovaných balíků
Zde naleznete seznam nainstalovaných balíků v adresáři /opt. Některé balíky nejsou nainstalovány korektně. Lidé, kteří balíky nainstalovali by k ním měli doplnit nějaký popis, číslo nainstalované verze apod.
- Bio
- gridengine
- jboss
- mpich
- mpi-tests
- pxeflash
- stream
- tomcat
- ganglia
- iozone
- maven
- mpich2
- openmpi
- rocks
- tripwire
[editovat] TODO
- nainstalovat důvěryhodný certifikát (https)
- upgrade diskového prostoru na frontendu
- instalace doplňujících aplikací pro uživatele
-
přestěhovat cluster do budovy A
