Jak korzystać z kolejek PBS
< Podręcznik użytkownika KDM < System kolejkowy
Portable Batch System (PBS) - system kolejkowania dostępny w kilku wersjach:
- PBSPro - wersja płatna, rozwijana przez firmę Altair
- OpenPBS - darmowa wersja
- Torque/PBS - darmowa wersja
PBS tworzy dla użytkownika pojedynczy i spójny interfejs do wszystkich zasobów którymi zarządza, niezależnie od tego, jak bardzo te zasoby są rozproszone. Pozwala to użytkownikom skupić się na pracy naukowej poprzez wyeliminowanie potrzeby samodzielnego dbania o efektywne wykorzystanie zasobów.
Operacje na zadaniach
Wstawianie zadań do kolejki
Aby wstawić zadanie do kolejki należy oszacować zapotrzebowanie zadania na zasoby (liczbę procesorów, czas, ilość pamięci, itd.), a następnie użyć polecenia qsub
.
Można zrobić to na dwa sposoby:
- Sposób pierwszy, najprostszy, z wykorzystaniem wyłącznie polecenia
qsub
:
$ echo polecenie-do-wykonania-i-jego-opcje |qsub [opcje dla qsub]
- Przykład:
$ echo g98 nazwa.inp |qsub -N nazwa-zadania
- Sposób drugi, z wykorzystaniem skryptu
- Należy utworzyć skrypt, który uruchamia zadanie. Skrypt taki może, obok uruchomienia zadania, zadbać również o utworzenie plików tymczasowych, wyczyszczenie przestrzeni
/scratch
, itp.
- Przykład skryptu:
#!/bin/sh
# przejdź do katalogu z danymi zadania (bardzo ważne!): cd jobdir1
# załóż katalog tymczasowy: mkdir -p /scratch/$USER/temp1
# uruchom program: ./ścieżka/program [opcje]
# skasuj katalog tymczasowy: rm -rf /scratch/$USER/temp1
- Patrz także Przykładowy skrypt OpenPBS.
- Następnie należy wstawić zadanie poleceniem
qsub
:
$ qsub [opcje dla qsub] nazwa-skryptu
- Przykład:
$ qsub -N nazwa ./skrypt1
System wstawi zadanie do kolejki spełniającej podane przez użytkownika wymagania lub, jeśli nie podano wymagań, do kolejki domyślnej (zwykle o najniższym priorytecie). Użytkownik otrzyma na terminalu informację o identyfikatorze zadania:
1677.leo.wcss.wroc.pl
Jeśli kolejka wymaga autoryzacji, to zadanie wpuszczone zostanie tylko wtedy, jeśli dany użytkownik ma do danej kolejki dostęp.
- Uwagi
- Jeśli użytkownik przeceni wymagania zadania, to zadanie będzie liczone w kolejce o niższym priorytecie, będzie więc dłużej czekać na uruchomienie i dłużej się liczyć.
- Jeśli użytkownik nie doceni wymagań zadania, to system "zabije" zadanie z powodu przekroczenia limitów zasobów.
Sprawdzanie stanu zadania
Stan zadania i kolejki można sprawdzić poleceniem qstat
. Zobacz też: konfiguracja kolejek PBS.
$ qstat
Kasowanie zadań
Aby skasować wstawione do systemu zadanie należy użyć polecenia qdel
:
$ qdel identyfikator_zadania
Zadanie zostanie usunięte bez względu na jego status.
Ustalanie zależności zadań
PBS pozwala na ustalanie zależności między zadaniami wstawianymi do kolejki, z określaniem np. kolejności ich uruchamiania. W najprostszym przypadku, jeśli chcemy aby wstawione zadania uruchamiały się kolejno po sobie, należy zlecić pierwsze zadanie w typowy sposób:
$ echo polecenie_i_jego_opcje | qsub [opcje dla qsub]
PBS zwróci wtedy identyfikator zadania (JobID), np.:
1144.tezro
Wstawiając następne zadanie trzeba podać, kiedy ma się ono zacząć, np. dopiero po zakończeniu poprzedniego zadania:
$ echo polecenie_i_jego_opcje | qsub -W depend=afterany:1144.tezro [pozostałe opcje dla qsub]
gdzie numer 1144.tezro
to identyfikator poprzednio wstawionego zadania. Każde kolejne zadanie wstawiane do kolejki można w analogiczny sposób uzależniać od poprzednio wstawionego zadania, podając w afterany:JobID
identyfikator tego poprzedniego. Utworzy się wtedy łańcuch zależnych zadań, uruchamianych po kolei.
PBS posiada szereg typów zależności. Użyty w przykładzie typ afterany
oznacza, że zadanie uruchomi się dopiero po zakończeniu wskazanego poprzedniego zadania, niezależnie czy zakończy się ono poprawnie czy z błędem. Więcej informacji na ten temat można uzyskać w manualu polecenia qsub
, w sekcji z opisem opcji -W
.
Najczęściej używane polecenia
Poniższa tabela zawiera krótki opis najczęściej używanych poleceń systemu PBS.
- Tabela. Polecenia PBS
Polecenie | opis |
qstat | lista zadań w kolejkach |
qstat -n | lista zadań w kolejkach z podaniem na jakim węźle liczy się każde zadanie |
qstat -q | lista kolejek |
qstat -Q | ustalone limity kolejek |
qstat -a | lista wszystkich zadań |
qstat -au userid | lista zadań użytkownika userid |
qstat -r | lista uruchomionych zadań (status running) |
qstat -f jobid | obszerna informacja o zadaniu o identyfikatorze jobid |
qstat -Qf queue | obszerna informacja o kolejce queue |
qstat -B | krótka informacja o stanie serwera OpenPBS |
qsub | wstaw zadanie do systemu (jeżeli nie ma parametrów, używa domyślnych ustawień) |
qsub jobscript | wstaw skrypt jobscript do systemu kolejkowania |
qsub -I | uruchom zadanie interaktywnie |
qsub -l limit=wartość | wstaw zadanie z podaniem wartości konkretnego limitu |
qsub -q queue | wstaw zadanie do konkretnej kolejki queue |
qdel jobid | usuwa zadanie, niezależnie od jego stanu w kolejce |
Przestrzeń tymczasowa
Przestrzeń na pliki tymczasowe generowane przez oprogramowanie znajduje się w lokalnych systemach plików na wszystkich węzłach klastra Nova znajduje się w ścieżce /scratch
. Przestrzeń ta przeznaczona jest wyłącznie do przechowywania plików tymczasowych generowanych przez zadania obliczeniowe. Każdy użytkownik ma na każdym węźle katalog /scratch/$USER
i tylko tam ma prawo do zapisu.
Generowanie i przechowywanie plików tymczasowych w katalogach domowych jest zabronione.
Użytkownik może ustalić gdzie liczy się jego zadanie (a tym samym gdzie generowane są pliki tymczasowe) poleceniem qstat -n [jobid]
. Pliki zadań zakończonych na klastrze Nova można odnaleźć wywołując polecenie:
$ pdsh -g all ls -la /scratch/$USER
Zobacz też: PBSPro, konfiguracja kolejek PBS
Systemy kolejkowe |
PBSPro |
---|