Jak korzystać z kolejek PBS: Różnice pomiędzy wersjami
m (1 wersja: H-R) |
|||
Linia 15: | Linia 15: | ||
Można zrobić to na dwa sposoby: | Można zrobić to na dwa sposoby: | ||
* Sposób pierwszy, najprostszy, z wykorzystaniem wyłącznie polecenia <code>qsub</code>: | * Sposób pierwszy, najprostszy, z wykorzystaniem wyłącznie polecenia <code>qsub</code>: | ||
− | $ '''echo polecenie-do-wykonania-i-jego-opcje |qsub [opcje dla qsub]''' | + | $ '''echo 'polecenie-do-wykonania-i-jego-opcje >&plik_wynikow' |qsub [opcje dla qsub]''' |
:Przykład: | :Przykład: | ||
$ '''echo g98 nazwa.inp |qsub -N nazwa-zadania''' | $ '''echo g98 nazwa.inp |qsub -N nazwa-zadania''' | ||
Linia 30: | Linia 30: | ||
'''mkdir -p /scratch/$USER/temp1''' <br /> | '''mkdir -p /scratch/$USER/temp1''' <br /> | ||
# uruchom program: | # uruchom program: | ||
− | '''./ścieżka/program [opcje]''' <br /> | + | '''./ścieżka/program [opcje] >&plik_wynikow ''' <br /> |
# skasuj katalog tymczasowy: | # skasuj katalog tymczasowy: | ||
'''rm -rf /scratch/$USER/temp1''' | '''rm -rf /scratch/$USER/temp1''' | ||
Linia 70: | Linia 70: | ||
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: | 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] | + | $ echo 'polecenie_i_jego_opcje >&plik_wynikow' | qsub [opcje dla qsub] |
PBS zwróci wtedy identyfikator zadania (JobID), np.: | PBS zwróci wtedy identyfikator zadania (JobID), np.: | ||
Linia 78: | Linia 78: | ||
Wstawiając następne zadanie trzeba podać, kiedy ma się ono zacząć, np. dopiero po zakończeniu poprzedniego zadania: | 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] | + | $ echo 'polecenie_i_jego_opcje >&plik_wynikow' | qsub -W depend=afterany:1144.tezro [pozostałe opcje dla qsub] |
gdzie numer <code>1144.tezro</code> 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 <code>afterany:JobID</code> identyfikator tego poprzedniego. Utworzy się wtedy łańcuch zależnych zadań, uruchamianych po kolei. | gdzie numer <code>1144.tezro</code> 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 <code>afterany:JobID</code> identyfikator tego poprzedniego. Utworzy się wtedy łańcuch zależnych zadań, uruchamianych po kolei. |
Wersja z 13:51, 11 maj 2011
< 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 >&plik_wynikow' |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] >&plik_wynikow
# 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 >&plik_wynikow' | 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 >&plik_wynikow' | 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 |
---|