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

Z KdmWiki
Przejdź do nawigacji Przejdź do wyszukiwania
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&nbsp;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&nbsp;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:

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