===== Slurm =====
Slurm - to system zarzadzania zasobami. Dzieki jego uzyciu nie dopuszcza sie do sytuacji kiedy wiele procesow obliczeniowych tego samego lub roznych uzytkownikow / uzytkowniczek probuje uzyc tych samych zasobow ( rdzenie, pamiec, dysk, ... ) co moze doprowadzic do znacznego wydluzenia czasu ich wykonania, lub wrecz ich przerwania. Inne podobne programy to LSF, PBS/Torque, SGE ich porownanie mozna znalezc [tu.]
W Slurm :
partycja (ang. partition) - grupa wezlow obliczeniowych. Na klastrze moze istniec wiecej niz jedna partycja. Jeden wezel obliczeniowy moze nalezec do kilku partycji.
zadanie obliczeniowe (ang. job) - m.in. skrypt z zadaniem obliczeniowym, ktory czeka na wykonanie lub jest wykonywany.
kolejka (ang. queue) - grupa zadan obliczeniowych, ktore sie wykonuja i/lub czekajacych na wykonanie
==== sinfo ====
Polecenie sinfo wyswietla informacje o dostepnych partycjach i zasobach. Na ponizszym przykladzie widac ze na anthill23 sa dostepne 4 partycje long, medium, short, test. Kazda z partycji ma inny maksymalny czas wykonywania zadania (TIMELIMIT : long - 6 dni, medium - 3 dni, short - 1 dzien, test - godzina i 30 minut). Widoczne jest takze, ze wszystie wezly obliczeniowe sa w obecnie dostepne (STATE : down - niedostepne, mix - czesc z zasobow wezla jest wykorzystywana, alloc - wszystkie zasoby wezla sa wykorzystywane, idle - wezly oczekujace na zadania).
[anowak@anthill23 tmp]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
long up 6-00:00:00 10 idle ant[007-008,602-609]
medium up 3-00:00:00 10 idle ant[007-008,602-609]
short up 1-00:00:00 10 idle ant[007-008,602-609]
test* up 1:30:00 10 idle ant[007-008,602-609]
[anowak@anthill23 tmp]$
==== squeue ====
Podglad aktualnie wykonywanych i czekajacych na wykonanie zadan obliczeniowych mozliwy jest za pomoca polecenie ''squeue''. Zadania w kolumnie ST (STATUS) moga byc w stanie: R oznacza zadanie ktore sie wykonuje (RUNNING), wartosc PD oznacza zadanie oczekujace na rozpoczecie wykonywania (PENDING), sa to dwa najczesniej spotykane statusy zadania.
[anowak@anthill23 tmp]$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
60589 long 1xi5_A prubach PD 0:00 1 (Priority)
60590 long 3kls_A prubach PD 0:00 1 (Priority)
60591 long 3km9_A prubach PD 0:00 1 (Priority)
...
60571 long 5l9u_A prubach PD 0:00 1 (Resources)
60580 long 6b3r_A prubach PD 0:00 1 (Priority)
60560 long 1vw1_A prubach R 1-21:12:51 1 ant007
60561 long 1vw2_F prubach R 1-21:12:51 1 ant008
59295 long make_kno prubach R 5-07:54:11 1 ant607
[anowak@anthill23 tmp]$
==== scancel ====
Polecenie ''scancel'' sluzy do zakonczenia zadania, ktore znajduje sie w kolejce. Najpierw wydajemy polecenie ''squeue'' w celu poznania numeru zadania (kolumna JOBID), ktore chcemy zatrzymac. A nastepnie np. w celu zatrzymania zadania o numerze 59295 wydajemy polecenie :
[anowak@anthill23 tmp]$ scancel 59295
==== tworzenie zadan obliczeniowych, tryb interaktywny ====
Krotkie zadania, kompilacje oprogramowania, testy itp. zwykle wykonuje sie w trybie interaktywnym. Ponizej przyklad uruchomienia sesji interaktywnej z alokacja 2 rdzeni i 1GB pamieci w trybie interaktywnym. Jak widac, slurm przydzielil te zasoby na wezle obliczeniowym ant007. **Nalezy pamietac zeby zakoczyc tryb interaktywny poleceniem ''exit'' dzieki temu zasoby wezla zostana zwolnione**.
[anowak@anthill23 tmp]$ srun --ntasks=2 --mem=1G --pty bash -l
anowak@ant007 tmp:~$ hostname
ant007
anowak@ant007 tmp:~$ exit
logout
[anowak@anthill23 tmp]$
==== tworzenie zadan obliczeniowych, tryb wsadowy ====
Najczesciej wykorzytywany tryb rezerwowania zasobow klastra. Polega na przygotowaniu skryptu, ktory przekazujemy do wykonania na klastrze poleceniem sbatch. Cecha charakterystyczna takiego skryptu (te pliki nazywane sa batch-ami), jest to ze w ich naglowku dodaje sie dyrektywy ''#SBATCH'', ktore sluza do alogowania zasobow, z ktorych skrypt ma korzystac.
#SBATCH --ntasks=2 # liczba rezerwowanych rdzeni
#SBATCH --mem=400M # calkowita ilosc zarezerowanej pamieci (400 MB)
#SBATCH --partition=short # nazwa partycji na ktorej ma byc wykonany skrypt
#SBATCH --job-name="gromacs test" # nazwa dla zadania wsadowego widoczna przy przegladaniu kolejki
#SBATCH --time=2-3:20 # limit czasu zadany dla zadania, w formacie (D-HH:MM) : 2 dni, 3 godziny, 20 minut
#SBATCH --time=100:30:20 # limit czasu zadany dla zadania, w formacie (HH:MM:SS) : 100 godzin, 30 minut, 20 sekund
#SBATCH --output=test-%A.output # sluzy do zmiany domyslnego formatu wyjscia programow uruchamianych za pomoca sbatch, '%A' zostanie zastapione nr zadania
W pelni funkcjonalne przyklady plikow batch mozna znalezc [[anthill_desc|tu]].