Kolejkowanie

W artykule przedstawiona jest zasada działania systemu kolejkowania. Po zapoznaniu się z nim zachęcamy do przejścia do poradników:

Zadania

Wszystkie obliczenia w klastrze realizowane są jako zadania zarządzane przez system Slurm. Poprzez zadanie (job w nomenklaturze Slurm) rozumiana jest jednostka pracy zawierająca między innymi:

  • unikalny identyfikator
  • nazwę
  • informacje o właścicielu i koncie rozliczeniowym
  • priorytet
  • stan
  • ograniczenia czasowe
  • zasoby obliczeniowe - rdzenie CPU, RAM, GPU
  • treść - program do wykonania

Użytkownicy klastra zgłaszają żądania wykonania zadań do systemu kolejkowego Slurm, który stara się optymalnie rozdzielić zadania na ograniczone zasoby sprzętowe.

Zarówno sesje interaktywne jak i obliczenia wsadowe tworzą zadania w systemie.

Partycje

Zasoby sprzętowe przydzielone są do partycji (partition). Lista partycji znajduje się w sekcji zasoby klastra.

Zadania przesyłane do systemu kolejkowania muszą być przypisane do co najmniej jednej partycji, która na podstawie skonfigurowanych parametrów decyduje o kolejności ich wykonywania.

Użytkownik może przekazać wiele docelowych partycji w parametrze zadania co może potencjalnie zwiększyć szanse jego szybszego uruchomienia. Brak specyfikacji partycji powoduje użycie tylko domyślnej wartości dla klastra.

Partycja gpu_spot

Jest specjalną partycją przeznaczoną do uruchamiania wyłącznie zadań wsadowych, które mogą być przerywane bez utraty dotychczas przetworzonych wyników. Będą one uruchamiane na pozostałych partycjach GPU jeśli nie są one aktualnie obciążone. Dotyczy to także normalnie niedostępnych partycji.

Zadania kolejkowane w tej partycji powinny obsługiwać przerywanie i wznawianie obliczeń, na przykład za pomocą mechanizmu snapshot.

Zagrożenie

Ze względu na możliwość zatrzymania i ponownego uruchomienia zadania w tej partycji zalecane jest użycie parametru --open-mode=append aby pliki logów nie zostały nadpisane w takim wypadku. Dzieki temu zostaną zachowane komunikaty sprzed zatrzymania danego zadania.

Partycje gpu_csi

Partycje z nazwami zaczynającymi się od gpu_csi są dostępne tylko dla Centrum Sztucznej Inteligencji

Priorytety

Każde zadanie przesłane do systemu kolejkowania ma nadawany priorytet decydujący od kolejności wykonywania. Wartość ta jest dynamiczna i zależna od wielu czynników, między innymi:

  • czasu przebywania danego zadania w kolejce
  • priorytetu użytkownika wysyłającego zadanie obliczanego według algorytmu Fair Share
  • typu i liczbie zasobów potrzebnych do wykonanie zadania
  • partycji i jej konfiguracji
  • wartości parametrów Nice oraz QoS nadanych przy przesłaniu zadania
Adnotacja

Parametr Nice służy do obniżania priorytetu zadań przez użytkownika. Obsługa QoS nie jest obecnie zaimplementowana.

Fair Share

Użytkownik klastra posiada przypisany systemowo priorytet wchodzący w skład algorytmu kolejkowania zadań. Jego wartość zależna jest od liczby wykonanych niedawno zadań w przeciągu 🚧X ubiegłych dni.

🚧TODO: po ustaleniu polityki kolejkowania dopisać wartości🚧

Im więcej zadań zostało wykonanych tym mniejszy priorytet użytkownika. Dzięki temu zapewniany jest sprawiedliwy dostęp wśród wszystkich użytkowników.

Priorytet użytkownika może być odczytany z systemu za pomocą polecenia sprio -w

🚧TODO: po ustaleniu polityki kolejkowania dopisać przykład wykonania🚧

Końcowy priorytet zadania może być odczytany za pomocą polecenia: squeue -o %Q -j <id Zadania>

🚧TODO: po ustaleniu polityki kolejkowania dopisać przykład wykonania🚧

squeue -o %Q -j 349
PRIORITY
1

Backfill

Mniejsze zadania o mniejszym priorytecie mogą być uruchamiane w przerwach między większymi zadaniami o wyższym priorytecie aby optymalizować efektywność użycia sprzętu.