Jak korzystać z kolejek PBS

Z KdmWiki
Skocz do: nawigacji, wyszukiwania

< Podręcznik użytkownika KDM < System kolejkowy < Jak korzystać z kolejek PBS

Kolejki

Uruchamianie obliczeń na klastrze Supernova odbywa się w ramach kolejek, które różnią się między sobą priorytetem, limitami czy prawami dostępu (a czasem również dostępnymi zasobami):

  • short6h - kolejka o wysokim priorytecie na krótkie zadania
    • limit czasu procesora: 6 h
  • short48h - kolejka o wysokim priorytecie na krótkie zadania
    • limit czasu procesora: 48 h
  • short7d - kolejka o średnim priorytecie na średnie zadania
    • limit czasu procesora: 168 h
  • normal - kolejna na typowe zadania
    • limit czasu działania zadania (Walltime): 504 h
  • bigmem - kolejka na zadania wymagające powyżej 23 050 MB pamięci (ale nie więcej niż 242 053 MB) na węzeł
    • limit czasu działania zadania (Walltime): 504 h
  • infinity - kolejka na bardzo długie zadania o niskim priorytecie

Zasoby

Po wyborze odpowiedniej kolejki należy zadeklarować ilość wymaganych zasobów.

Przydział zasobów może odbywać się w jednej, spójnej części (dla zadań szeregowych lub zrównoleglonych w obrębie jednego komputera) lub kilku (dla zadań zrównoleglonych przy użyciu bibliotek MPI). Deklarację buduje się używając wyrażenia select dla parametru -l polecenia qsub (opisanego w dalszej części). Jej format jest następujący:

select=X:zasób1=wartość1:zasób2=wartość2+Y:zasób3=wartość3:zasób4=wartość4

gdzie:

  • X - liczba części pierwszego zbioru zasobów
  • zasób1=wartość1:zasób2=wartość2 - opis pierwszego zbioru zasobów
  • Y - liczba części drugiego zbioru zasobów
  • zasób3=wartość3:zasób4=wartość4 - opis drugiego zbioru zasobów

Liczba zbiorów zasobów może być różna (równa 1 lub większa).

Dostępne parametry:

  • ncpus - liczba rdzeni obliczeniowych
    • domyslnie: 1
    • maksymalnie:
      • 8 na węzłach II i III generacji
      • 12 na węzłach IV generacji
      • 4 jeżeli korzystamy z kart graficznych na węzłach Tesla
      • 60 w kolejce bigmem na węzłach Tesla
  • mem - rozmiar pamięci
    • domyślnie: 1700 MB
    • maksymalnie:
      • 15 050 MB na węzłach II i III generacji
      • 23 050 MB na węzłach IV generacji
      • 16 384 MB jeżeli korzystamy z kart graficznych na węzłach Tesla
      • 242 053 MB w kolejce bigmem na węzłach Tesla
  • ngpus - liczba kart graficznych
    • domyślnie: 0 (zadanie trafi na węzeł z GPU dopiero jeżeli użytkownik tego zażąda)
    • maksymalnie: 2

Osobnym słowem kluczowym, którego używa się podczas żądania zasobów, jest liczba procesów MPI zadania:

  • mpiprocs - liczba procesów MPI
    • domyślnie: 1
    • maksymalnie:
      • 8 na węzłach II i III generacji
      • 12 na węzłach IV generacji
      • 4 jeżeli korzystamy z kart graficznych na węzłach Tesla
      • 60 w kolejce bigmem na węzłach Tesla

Należy skorzystać z tego parametru, kiedy w jednej części alokacji chcemy uruchomić więcej niż jeden proces MPI.

Przykładowe definicje wymagań

Zadanie uruchamia 4 procesy w obrębie jednego węzła i wymaga 4096 MB RAM (po 1024 MB na proces):

select=1:ncpus=4:mem=4096MB

Zadanie uruchamia 8 procesów MPI, z których każdy wymaga 512 MB RAM

select=8:ncpus=1:mem=512MB

Zadanie uruchamia 32 procesów MPI, po 4 na każdym węźle (i domyślne 1700 MB na każde 4 procesy):

select=8:ncpus=4:mpiprocs=4

Zadanie wymaga 16GB RAM (i jednego rdzenia)

select=1:mem=16GB

Zadanie wymaga 1 karty GPU i 4 GB pamięci

select=1:ngpus=1:mem=4GB

Wstawianie zadań

Do wstawiania zadań do kolejki służy polecenie qsub. Opis zadania powinien być zawarty w skrypcie powłoki. Natępnie taki skrypt przekazywany jest do kolejki jako parametr polecenia qsub (lub na standardowe wejście tej komendy). Najważniejsze parametry polecenia można znaleźć poniżej:

  • -q - wybór kolejki
  • -l specyfikacja wymagań - wartości parametru mogą być następujące
    • select= - opis wymagań
    • software= - informacja o używanym oprogramowaniu
  • -N - nazwa zadania (jej długość nie może przekraczać 12 znaków)
  • -m - włączenie wysyłania powiadomień o zdarzeniach
    • b - o rozpoczęciu zadania
    • e - o zakończeniu zadania
  • -I - zadanie interaktywne (w tym przypadku nie należy przekazywać skryptu)
  • -X - przekierowanie wyświetlania (ma sens w przypadku zadań interaktywnych, wymaga logowania z przekierowaniem wyświetlania

Cenną cechą programu qsub jest możliwość przekazywania parametrów w skrypcie podanym jako argument, poprzez linie zaczynające się od:

#PBS

Sprawdzanie stanu systemu kolejkowego

Do sprawdzenia stanu kolejki służy polecenie qstat. Można korzystać z następujących jego parametrów:

  • -r - pokazuje uruchomione zadania
  • -i - pokazuje zadania oczekujące
  • -u - pokazuje zadania wybranego użytkownika
  • -f - pokazuje szczegółowe informacje o zadaniach (lub zadaniu, jeżeli podamy jego identyfikator po parametrze)

Usuwanie zadań

Jeżeli z jakiegoś powodu istnieje potrzeba usunięcia zadania - należy skorzystać z polecenia qdel, które przyjmuje jako parametr identyfikator zadania. Można kasować zadania zarówno oczekujące w kolejce jak i uruchomione.

Rezerwacje

Może się zdarzyć, że dostęp do zasobów potrzebny jest w określonym czasie np. za 3 tygodnie w poniedziałek między godziną 8 a 16. W takich przypadkach należy skorzystać z rezerwacji - powoduje to powstanie nowej kolejki, do której wstawione zadania nie będą konkurować o dostęp z innymi zadaniami. Należy jednak pamięć, że nie zawsze będzie to możliwe (będzie tylko wtedy kiedy system kolejkowy w żądanym czasie będzie w stanie zapewnić zasoby). Tworzenie rezerwacji odbywa się poleceniem pbs_rsub, którego najważniejsze parametry to:

  • -R - czas rozpoczęcia rezerwacji w formacie YYYYMMDDHHmm (201302010456 oznacza w takim przypadku 4:56 01.02.2013)
  • -E - czas zakończenia rezerwacji w formacie YYYYMMDDHHmm
  • -l - specyfikacja zasobów rezerwacji (w formacie takim, jak w przypadku zadań)
  • -r - reguła rekurencji (jeżeli rezerwacja ma się powtarzać cyklicznie, więcej na ten temat w manualu polecenia pbs_rsub)
  • -U - lista użytkowników, którzy mogą korzystać z rezerwacji

Do wyświetlenia informacji o rezerwacjach służy polecenie pbs_rstat. Bez parametrów listuje ono założone rezerwacje, a szczegóły o wybranej można zobaczyć dodając parametr -f i identyfikator. Aby usunąć rezerwację należy użyć polecenia pbs_rdel.

Przykłady

Uruchomienie obliczeń na postawie skryptu

  • zawartość skryptu uruchom.sh
#!/bin/bash
#PBS -q short6h
#PBS -l select=1:ncpus=2:mem=2048MB
#PBS -l software=test_qsub
#PBS -m be

# wejscie do katalogu, z ktorego zostalo wstawione zadania
cd $PBS_O_WORKDIR

# uruchom program
./test1 > wynik.txt
  • wstawienie skryptu
qsub uruchom.sh

Uruchomienie zadania interaktywnego

qsub -I -l select=1:ncpus=1:mem=2048MB -l software=CFX_14.5

Przekazanie skryptu przez standardowe wejście qsub

  • zawartość pliku skrypt.sh
#!/bin/bash
cat << EOF | qsub
#!/bin/bash
#PBS -q short48h
#PBS -l select=1:mem=512MB
#PBS -l software=qsub_stdin
#PBS -m be

# wejscie do katalogu, z ktorego zostalo wstawione zadania
# \ przez $ jest wymagany, aby powloka nie podmienila
# $PBS_O_WORKDIR na wartosc podczas wstawiania - tylko
# podczas dzialania zadania na wezle

cd \$PBS_O_WORKDIR

# uruchom program
./test1 > wynik.txt
EOF
  • wstawienie zadania:
chmod +x skrypt.sh
./skrypt.sh

Więcej o poleceniu qsub można znaleźć w manualu - poprzez uruchomienie polecenia:

man qsub

Zlecenie rezerwacji

Próba utworzenia rezerwacji w bieżącym dniu (dlatego pominięto rok, miesiąc i dzień w wymaganiach) od 12:00 do 14:00, powtarzającej się w poniedziałki, środy i piątki aż do 31.12.2013, na zasobach składających się z dwóch części po 1 rdzeniu i 2000 MB RAM, z której mogą korzystać użytkownicy user1 oraz user2

pbs_rsub -R 1200 -E 1400 -r "FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20131231" -l select=2:ncpus=1:mem=2000MB -U user1,user2

Jeżeli utworzenie rezerwacji będzie możliwe - system kolejkowy wyśle wiadomość (na adres zarejestrowany w bazie) z potwierdzeniem.


Zobacz też: PBSPro, konfiguracja kolejek PBS