Site Tools


howtouseslurm_001

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 tu.

howtouseslurm_001.txt · Last modified: 2023/08/01 01:08 by 127.0.0.1