User Tools

Site Tools


first_steps:slurm_overview

System kolejkowy SLURM

Klaster działa pod kontrolą systemu kolejkowego SLURM. System ten jest odpowiedzialny za alokację zasobów obliczeniowych (CPU, GPU, RAM) i uruchamianie zadań na węzłach obliczeniowych. Zadania uruchamiane są z tzw. hosta dostępowego przy pomocy poleceń srun lub sbatch. Użytkownik oprócz zdefiniowania zadania jakie chce uruchomić powinien dodatkowo wyspecyfikować jakie zasoby są potrzebne do realizacji jego zadania oraz na jak długi czas. Następnie SLURM dodaje zadanie do kolejki i uruchamia zadania gdy tylko żądane zasoby staną się dostępne.

Wszystkie zdania są uruchamiane za pośrednictwem hosta dostępowego. Nie ma możliwości bezpośredniego logowania się na węzły obliczeniowe przez SSH.

W przypadku gdy użytkownik pominie specyfikację wymagań zostaną użyte wartości domyślne (np. maksymalny dostępny czas zasobów. Może to jednak spowodować zachowanie niezgodne z oczekiwaniem: np. zbyt małą liczbę dostępnych procesorów, brak dostępu do GPU lub długi czas oczekiwania w kolejce, lub nadmierne obciążenie billingu konta.

Podstawowe polecenia SLURM'a

sinfo

Wyświetla informacje o stanie klastra - liczba dostępnych kolejek i węzłów obliczeniowych wchodzących w ich skład, oraz ich dostępność.

squeue

Wyświetla informacje o aktualnie wysłanych do kolejki zadaniach (zarówno uruchomionych jak i oczekujących).

srun

Służy do urcuchamiania poleceń w czasie rzeczywistym. Dobre do eksperymentowania i wykonywania niewielkich testów.

Przykładowo polecenie: $ srun hostname uruchomione na hoście dostępowym spowoduje, że do kolejki zostanie dodane zadanie wykonania programu hostname. Slurm wyśle żądanie uruchomienia tego programu na węźle pierwszym dostępnym węźle obliczeniowym i w odpowiedzi zwróci wynik - w tym wypadku nazwę hosta, na który trafi zadanie.

sbatch

Służy do uruchamiania zadań za pośrednictwem tzw. pliku wsadowego (ang. batch file). Plik ten zawiera wszystkie informacje niezbędne do uruchomienia zadania.

scontrol

Służy do uzyskiwania szczegółowych informacji na temat stanu klastra. Przykłady:

  • scontrol show node dgx-1 wyświetli informacje o stanie węzła dgx-1
  • scontrol show job <job_id> wyświetla informacje o zadaniu o identyfikatorze <job_id>
  • scontrol show reservations wyświetla informacje o aktualnych rezerwacjach (okresach w których część lub całość zasobów może być niedostępna).

Konsola interaktywna

Niektóre zadania mogą wymagać dostępu do powłoki bash na węźle obliczeniowym. Przykładem takiego zadania może być kompilacja własnego programu przed jego właściwym uruchomieniem. Ze względu na brak możliwości logowania się przez SSH bezpośrednio na węzły obliczeniowe należy zarządać od SLURM'a wykonanie zadania uruchomienia powłoki BASH. Konsolę interaktywną można uruchomić korzystając z polecenia:

srun --pty --account <moja_grupa> bash

niekiedy warto doprecyzować na którym węźle interesuje nas uruchomienie powłoki:

srun -w dgx-3 --pty --account <moja_grupa> bash

a także wskazać na ile czasu będziemy jej potrzebować. W szczególności przydatne, gdy chcemy zrobić coś “na szybko”.

srun -w dgx-3 --time 00:15:00 --pty --account <moja_grupa> bash

powyższy zapis oznacza maksymalny czas dla zadania 15 minut.

Jeśli nie precyzujemy na jaki czas potrzebujemy zasobu, to SLURM zakłada najdłuższy możliwy czas dla danej kolejki (zazwyczaj kilka dni). Jeśli w systemie istnieje rezerwacja zbliżająca się np. za dwie godziny, a my potrzebujemy dostępu do konsoli na 10 minut, a mimo to nie podamy tej informacji, to SLURM założy, że oczekujemy dostępnego maksymalnego czasu i nie wpuści zadania przed rezerwacją.

Częstym błędem jest pomieszanie kolejności argumentów. zapis: srun -w dgx-3 --pty bash --time 00:15:00 jest nieprawidłowy, ponieważ argument --time zostanie zinterpretowany jako parametr przekazany do programu bash a nie srun.

first_steps/slurm_overview.txt · Last modified: 2024/11/14 05:09 by mkadlof