Jak korzystać z kolejek PBS: Różnice pomiędzy wersjami

Z KdmWiki
Skocz do: nawigacji, wyszukiwania
m
m (Kolejki)
Linia 1: Linia 1:
 
<small>< [[Podręcznik użytkownika KDM]] < [[System kolejkowy]] < Jak korzystać z kolejek PBS</small>
 
<small>< [[Podręcznik użytkownika KDM]] < [[System kolejkowy]] < Jak korzystać z kolejek PBS</small>
 
== Kolejki ==
 
== Kolejki ==
System [[PBSPro]] zarządza zadaniami na klastrze [[Bem]]. Kolejki skonfigurowane są wspólnie w obrębie danego klastra/serwera.  
+
Na klastrze [[Bem]] zadaniami obliczeniowymi zarządza system kolejkowania [[PBSPro]].
  
Uruchamianie obliczeń na klastrze [[Bem]] 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).
+
Uruchamianie obliczeń 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).
  
Podstawowe kolejki dostępne na klastrze Bem dla wszystkich użytkowników KDM:
+
Uruchamianie typowych obliczeń na klastrze nie wymaga podawania kolejki, gdyż wyboru odpowiedniej kolejki dokonuje system kolejkowy na podstawie podanych przez użytkownika wymagań odnośnie czasu wykonania.
* main, short, short48h, short168h, normal, infinity
+
 
 +
Podstawowe kolejki na klastrze Bem przeznaczone dla wszystkich użytkowników KDM:
 +
* '''main''' - zadania należy zlecać do tej kolejki '''podając limit czasu''' (przy użyciu konstrukcji opisanej w dalszej części artykułu: '''-l walltime=X''')
 +
* short, short48h, short168h, normal, infinity - użytkownik nie ma możliwości bezpośredniego wstawiania zadań do tych kolejek, dokona tego system kolejkowy automatycznie, w oparciu o podany limit czasu.
 
Kolejki dostępne na klastrze Bem dla użytkowników infrastruktury PL-Grid:
 
Kolejki dostępne na klastrze Bem dla użytkowników infrastruktury PL-Grid:
 
* plgrid, plgrid-long, plgrid-testing
 
* plgrid, plgrid-long, plgrid-testing
W typowych przypadkach wyboru odpowiedniej kolejki dokonuje system kolejkowy na podstawie wymagań odnośnie czasu wykonania. Uruchamianie obliczeń na klastrze [[Bem]] zazwyczaj nie wymaga podawania kolejki. Co więcej, użytkownik nie ma możliwości bezpośredniego wstawiania zadań do kolejek short, short48h, short168h, normal oraz infinity. '''Zadania należy zatem zlecać do kolejki main podając limit czasu''' (przy użyciu konstrukcji opisanej w dalszej części artykułu: '''-l walltime=X'''), na podstawie którego zadanie zostanie przekierowane do odpowiedniej kolejki.
+
 
 +
W systemie kolejkowym zakładane są także czasowo dedykowane kolejki na specyficzne potrzeby projektowe lub grup badawczych.
 +
 
 +
Listę aktualnych kolejek można wyświetlić po zalogowaniu na węzeł dostępowy klastra i wydaniu polecenia:
 +
> qstat -q
  
 
== Sprawdzanie stanu systemu kolejkowego ==
 
== Sprawdzanie stanu systemu kolejkowego ==

Wersja z 13:34, 6 maj 2016

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

Kolejki

Na klastrze Bem zadaniami obliczeniowymi zarządza system kolejkowania PBSPro.

Uruchamianie obliczeń 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).

Uruchamianie typowych obliczeń na klastrze nie wymaga podawania kolejki, gdyż wyboru odpowiedniej kolejki dokonuje system kolejkowy na podstawie podanych przez użytkownika wymagań odnośnie czasu wykonania.

Podstawowe kolejki na klastrze Bem przeznaczone dla wszystkich użytkowników KDM:

  • main - zadania należy zlecać do tej kolejki podając limit czasu (przy użyciu konstrukcji opisanej w dalszej części artykułu: -l walltime=X)
  • short, short48h, short168h, normal, infinity - użytkownik nie ma możliwości bezpośredniego wstawiania zadań do tych kolejek, dokona tego system kolejkowy automatycznie, w oparciu o podany limit czasu.

Kolejki dostępne na klastrze Bem dla użytkowników infrastruktury PL-Grid:

  • plgrid, plgrid-long, plgrid-testing

W systemie kolejkowym zakładane są także czasowo dedykowane kolejki na specyficzne potrzeby projektowe lub grup badawczych.

Listę aktualnych kolejek można wyświetlić po zalogowaniu na węzeł dostępowy klastra i wydaniu polecenia:

> qstat -q

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)

Konfigurację kolejek można przeglądać za pomocą komendy:

> qstat -q

Dokładniejsze informacje na temat kolejki wyświetla komenda:

> qstat -Qf nazwa_kolejki


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 węzła) 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). Alokowane części mogą (ale nie muszą) znaleźć się na różnych węzłach.

Dostępne parametry:

  • ncpus - liczba rdzeni obliczeniowych
    • domyslnie: 1
    • maksymalnie 24
    • 4 jeżeli korzystamy z kart graficznych na węzłach Tesla
  • mem - rozmiar pamięci
    • domyślnie: 2000 MB
    • maksymalnie:
      • 60 000 MB na większości węzłów
      • 125 000 MB na 32 węzłach
    • 16 384 MB jeżeli korzystamy z kart graficznych 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 24
    • 4 jeżeli korzystamy z kart graficznych 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 procesy MPI, po 4 w każdej części alokacji (i domyślne 2000 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

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 main
#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 main
#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