Podstawy:PBS: Różnice pomiędzy wersjami

Z Komputery Dużej Mocy w ACK CYFRONET AGH
Skocz do:nawigacja, szukaj
(Utworzył nową stronę „===Uruchamianie zadań === Do uruchamiania zadań służy komenda <tt>qsub</tt>. Zadania można uruchamiać w dwóch trybach: interaktywnym, gdzie do dyspozycji uż...”)
 
(Dodane info o zeus-jobs-history)
 
(Nie pokazano 18 wersji utworzonych przez 6 użytkowników)
Linia 1: Linia 1:
===Uruchamianie zadań ===  
+
{{DISPLAYTITLE:System kolejkowy}}
Do uruchamiania zadań służy komenda <tt>qsub</tt>. Zadania można uruchamiać w dwóch trybach: interaktywnym, gdzie do dyspozycji użytkownika jest konsola terminala lub wsadowym. W tym drugim przypadku wszystkie komendy umieszcza się w pliku. W takim pliku linijki zawierające Instrukcje sterujące dla systemu kolejkowego muszą zaczynać się ciągiem znaków <tt>#PBS</tt>. Umieszcza się je w początkowej części pliku. Dzięki temu system kolejkowy jest w stanie odczytać opcje jemu właściwe właśnie z tych linijek i uruchomić pozostałe instrukcje, dotyczące już samego zadania obliczeniowego, z dalszej części pliku. Najważniejsze opcje i parametry komendy <tt>qsub</tt> zawiera poniższa tabela.
+
[[Category:Podstawy]]
 +
System kolejkowy jest wygodnym narzędziem uruchamiania zadań na zasobach obliczeniowych. W zależności od potrzeb, może on informować użytkownika o dacie i czasie rozpoczęcia, czy też zakończenia wykonywania danego zadania na wskazany adres e-mail.
 +
 
 +
==Uruchamianie zadań ==
 +
Do uruchamiania zadań służy komenda <tt>qsub</tt>. Zadania można uruchamiać w dwóch trybach: interaktywnym (gdzie do dyspozycji użytkownika jest konsola terminala) lub wsadowym. W tym drugim przypadku wszystkie komendy umieszcza się w pliku. W takim pliku linijki zawierające instrukcje sterujące dla systemu kolejkowego muszą zaczynać się ciągiem znaków <tt>#PBS</tt>. Umieszcza się je w początkowej części pliku. Dzięki temu system kolejkowy jest w stanie odczytać opcje jemu właściwe właśnie z tych linijek i uruchomić pozostałe instrukcje, dotyczące już samego zadania obliczeniowego, z dalszej części pliku. Najważniejsze opcje i parametry komendy <tt>qsub</tt> zawiera poniższa tabela.
 
{| class="wikitable"
 
{| class="wikitable"
 
! width=5% |Opcja    !!width=20%|Parametry !! width="50%" |Opis !!Uwagi
 
! width=5% |Opcja    !!width=20%|Parametry !! width="50%" |Opis !!Uwagi
Linia 8: Linia 12:
 
| || <tt>nodes=<liczba_węzłów></tt> || Parametr służy do specyfikacji liczby wezłów ||
 
| || <tt>nodes=<liczba_węzłów></tt> || Parametr służy do specyfikacji liczby wezłów ||
 
|-
 
|-
| || <tt>ppn=<liczba rdzeni></tt> || Liczba żądanych rdzeni na każdym węźle || opcja niedostępna na maszynie [[Baribal]]
+
| || <tt>ppn=<liczba rdzeni></tt> || Liczba żądanych rdzeni na każdym węźle ||
 +
|-
 +
| || <tt>pmem=<ilość pamięci></tt> || Ilość pamięci operacyjnej dla każdego zaalokowanego rdzenia obliczeniowego. Alternatywnie można ustawić wymaganie pamięciowe dla całego zadania za pomocą parametru mem=. O obu przypadkach wartość należy podawać w mega- lub gigabajtach, np. 1gb. ||
 
|-
 
|-
 
| || <tt>walltime=<czas obliczeń></tt> || Maksymalny czas obliczeń. Czas należy podawać w formacie DD:GG:MM:SS gdzie DD, GG, MM, SS oznaczają odpowiednio żądaną liczbę dni, godzin, minut i sekund na zadanie. ||
 
| || <tt>walltime=<czas obliczeń></tt> || Maksymalny czas obliczeń. Czas należy podawać w formacie DD:GG:MM:SS gdzie DD, GG, MM, SS oznaczają odpowiednio żądaną liczbę dni, godzin, minut i sekund na zadanie. ||
Linia 16: Linia 22:
 
| <tt>-j</tt> || <tt>oe</tt> || Połączenie standardowego wyjścia ze standardowym wyjściem błędów podczas wykonywania obliczeń ||
 
| <tt>-j</tt> || <tt>oe</tt> || Połączenie standardowego wyjścia ze standardowym wyjściem błędów podczas wykonywania obliczeń ||
 
|-
 
|-
| <tt>-m</tt> || <tt>b</tt>, <tt>e</tt> lub <tt>a</tt> || System kolejkowy wyśle e-mail do użytkownika jeśli zadanie rozpocznie się wykonywać <tt>b</tt>, skończy wykonywać <tt>e</tt> lub zostanie przerwane <tt>a</tt>.
+
| <tt>-m</tt> || <tt>b</tt>, <tt>e</tt> lub <tt>a</tt> || System kolejkowy wyśle e-mail do użytkownika jeśli zadanie rozpocznie się wykonywać <tt>b</tt>, skończy wykonywać <tt>e</tt> lub zostanie przerwane <tt>a</tt>. ||
 
|-
 
|-
 
| <tt>-M</tt> || <tt><adres@e-mail.użytkownika></tt> || Adres e-mail użytkownika na który ma zostać wysłana wiadomość o stanie zadania ||
 
| <tt>-M</tt> || <tt><adres@e-mail.użytkownika></tt> || Adres e-mail użytkownika na który ma zostać wysłana wiadomość o stanie zadania ||
Linia 22: Linia 28:
 
| <tt>-q</tt> || <tt><nazwa_kolejki></tt> || Specyfikuje nazwę kolejki do której ma trafić zadanie  ||
 
| <tt>-q</tt> || <tt><nazwa_kolejki></tt> || Specyfikuje nazwę kolejki do której ma trafić zadanie  ||
 
|-
 
|-
| <tt>-I</tt> || || uruchomienie zadania intraktywnego ||
+
| <tt>-I</tt> || || uruchomienie zadania interaktywnego ||
 
|-
 
|-
| <tt>-X</tt> || || w trybie interaktywnym pozwala na uruchamianie programów okienkowych || opcja niedostępna na maszynie [[Baribal]] i [[Mars]]
+
| <tt>-X</tt> || || w trybie interaktywnym pozwala na uruchamianie programów okienkowych ||
 
|}
 
|}
  
===Wyświetlanie informacji o stanie zadań w kolejkach===
+
==Usuwanie zadań==
 +
Do usuwania zadań służy komenda <tt>qdel</tt>. W celu sunięcia zadania z kolejki potrzebny jest również jego identyfikator numeryczny (jobid), który można wyświetlić komendą <tt>qstat</tt>. Cała sekwencja może wyglądać następująco:
 +
<pre>
 +
qdel 12345678910
 +
</pre>
 +
Jeśli zadania nie da się usunąć należy skontaktować się z administratorem komputera.
 +
 
 +
==Wyświetlanie informacji o stanie zadań w kolejkach==
 
Do wyświetlania informacji o zadaniach oraz kolejkach służy komenda <tt>qstat</tt>. Wywołanie komendy bez parametrów spowoduje wyświetlenie informacji o wszystkich zadaniach w kolejkach. Najczęściej używane opcje komendy <tt>qstat</tt> zebrano w tabeli poniżej.
 
Do wyświetlania informacji o zadaniach oraz kolejkach służy komenda <tt>qstat</tt>. Wywołanie komendy bez parametrów spowoduje wyświetlenie informacji o wszystkich zadaniach w kolejkach. Najczęściej używane opcje komendy <tt>qstat</tt> zebrano w tabeli poniżej.
  
Linia 39: Linia 52:
 
| <tt><identyfikator zadania></tt> || || Wyświetla informacje o danym zadaniu. ||
 
| <tt><identyfikator zadania></tt> || || Wyświetla informacje o danym zadaniu. ||
 
|-
 
|-
| <tt>-f</tt> || || Pełna informacj o wszystkich zadaniach systemu kolejkowego. ||
+
| <tt>-f</tt> || || Pełna informacja o wszystkich zadaniach systemu kolejkowego. ||
 
|}
 
|}
  
===Usuwanie zadań===
+
Do wyświetlenia listy zakolejkowanych oraz uruchomionych już zadań można wykorzystać także komendę <tt>zeus-jobs</tt>.
Do usuwania zadań służy komenda <tt>qdel</tt>. W celu sunięcia zadania z kolejki potrzebny jest również jego identyfikator numeryczny (jobid), który można wyświetlić komendą <tt>qstat</tt>. Cała sekwencja może wyglądać następująco:
+
Dzięki niej można wyświetlić także efektywność przeprowadzanych obliczeń oraz ich zapotrzebowanie na pamięć operacyjną.
<pre>
+
Dostępne opcje komendy <tt>pro-jobs</tt> można znaleźć pod przełącznikiem <tt>-h/--help</tt>, tj. <tt>zeus-jobs -h</tt>.
qdel 12345678910
+
Przykładowe użycie komendy:
</pre>
+
* informacje o wszystkich zadaniach użytkownika: <tt>zeus-jobs</tt>
===Przydatne zmienne systemu kolejkowego===
+
* statystyki tylko dla zadań aktualnie działających w kolejce <plgrid>plgrid</tt> wraz z informacją o węzłach (i ilości rdzeni na węźle) na których zadanie działa: <tt>zeus-jobs -rNQ plgrid</tt>
 +
* szczegółowe informacje na temat zadań o ID 12345 oraz 12346: <tt>zeus-jobs -f 12345,12346</tt>
 +
 
 +
==Wyświetlanie informacji o zadaniach zakończonych==
 +
Do wyświetlania informacji o zadaniach już zakończonych służy komenda <tt>zeus-jobs-history</tt>. Pozwala ona wyświetlić statystyki zadań w formacie podobnym do <tt>pro-jobs</tt>. Domyślnie komenda wyświetla 20 najwcześniej zakończonych zadań użytkownika. Opcje komendy można znaleźć pod przełącznikiem <tt>-h/--help</tt>, tj. <tt>zeus-jobs-history -h</tt>.
 +
Przykłady użycia komendy:
 +
* standardowy output 20 ostatnich zadań: <tt>zeus-jobs-history</tt>
 +
* bardziej szczegółowe statystyki dla zadań 12345 oraz 12346: <tt>zeus-jobs-history -f 12345,12346</tt>
 +
* statystyki ostatnich 50 zadań w odwrotnej kolejności bez wyświetlania nazw kolumn:  <tt>zeus-jobs-history -til 50</tt>
 +
 
 +
 
 +
==Przydatne zmienne systemu kolejkowego==
 
* <tt>$PBS_NODEFILE</tt> Zmienna wskazuje na plik z nazwami węzłów przydzielonymi dla zadania. Najczęściej wykorzystywany do określania liczby rdzeni przydzielonej zadaniu np.:
 
* <tt>$PBS_NODEFILE</tt> Zmienna wskazuje na plik z nazwami węzłów przydzielonymi dla zadania. Najczęściej wykorzystywany do określania liczby rdzeni przydzielonej zadaniu np.:
 
<pre>
 
<pre>
Linia 55: Linia 79:
 
<pre>
 
<pre>
 
cd $PBS_O_WORKDIR
 
cd $PBS_O_WORKDIR
 +
</pre>
 +
 +
 +
==Przykłady==
 +
===Zadanie interaktywne===
 +
Uruchomienie zadanie interaktywnego w kolejce "l_interactive" z możliwością pracy w trybie tekstowym wymagające jednego rdzenia na jednym węźle obliczeniowym.
 +
<pre>
 +
qsub -I -q l_interactive -l nodes=1:ppn=1
 +
</pre>
 +
 +
Uruchomienie zadanie interaktywnego w kolejce "l_interactive" z możliwością pracy w trybie graficznym wymagające jednego rdzenia na jednym węźle obliczeniowym.
 +
<pre>
 +
qsub -IX -q l_interactive -l nodes=1:ppn=1
 +
</pre>
 +
'''Uwaga:''' W przypadku chęci skorzystania z trybu graficznego należy pamiętać o [[Podstawy#Logowanie|połączeniu się]] z maszyną dostępową klastra w sposób umożliwiający przenoszenie tego trybu.
 +
===Zadanie jednordzeniowe===
 +
Uruchomienie z linii poleceń zadania w kolejce "l_infinite" wymagające jednego rdzenia na jednym węźle obliczeniowym:
 +
<pre>
 +
qsub -q l_infinite -l nodes=1:ppn=1 nazwa_skryptu_do_uruchomienia
 +
</pre>
 +
W przypadku skryptu należy użyć poniższych wpisów:
 +
<pre>
 +
#PBS -q l_infinite
 +
#PBS -l nodes=1:ppn=1
 +
</pre>
 +
===Zadanie rezerwujące cały węzeł obliczeniowy ===
 +
W pierwszej kolejności należy wiedzieć, czy na danej maszynie wszystkie węzły obliczeniowe mają tę samę liczbę rdzeni. TODO
 +
Uruchomienie z linii poleceń zadania w kolejce "l_infinite" rezerwujące cały 12-rdzeniowy węzeł obliczeniowy:
 +
<pre>
 +
qsub -q l_infinite -l nodes=1:ppn=12 nazwa_skryptu_do_uruchomienia
 +
</pre>
 +
W przypadku skryptu należy użyć poniższych wpisów:
 +
<pre>
 +
#PBS -q l_infinite
 +
#PBS -l nodes=1:ppn=12
 +
</pre>
 +
 +
===Zadanie rezerwujące po X procesorów na Y wezłach obliczeniowych ===
 +
'''Uwaga! Jeżeli używanych jest więcej, niż jeden węzeł obliczeniowy, wartość parametru ppn (ilość procesorów na węzeł, w tym przypadku X) musi wynosić maksymalną ilość procesorów na węźle (dla węzłów z procesorami  Intel: 12; dla procesorów AMD: 64).'''
 +
 +
Uruchomienie z linii poleceń zadania w kolejce "l_infinite" rezerwujące po X procesorów na Y wezłach obliczeniowych:
 +
<pre>
 +
qsub -q l_infinite -l nodes=Y:ppn=X nazwa_skryptu_do_uruchomienia
 +
</pre>
 +
W przypadku skryptu należy użyć poniższych wpisów:
 +
<pre>
 +
#PBS -q l_infinite
 +
#PBS -l nodes=Y:ppn=X
 
</pre>
 
</pre>

Aktualna wersja na dzień 09:27, 12 wrz 2016

System kolejkowy jest wygodnym narzędziem uruchamiania zadań na zasobach obliczeniowych. W zależności od potrzeb, może on informować użytkownika o dacie i czasie rozpoczęcia, czy też zakończenia wykonywania danego zadania na wskazany adres e-mail.

Uruchamianie zadań

Do uruchamiania zadań służy komenda qsub. Zadania można uruchamiać w dwóch trybach: interaktywnym (gdzie do dyspozycji użytkownika jest konsola terminala) lub wsadowym. W tym drugim przypadku wszystkie komendy umieszcza się w pliku. W takim pliku linijki zawierające instrukcje sterujące dla systemu kolejkowego muszą zaczynać się ciągiem znaków #PBS. Umieszcza się je w początkowej części pliku. Dzięki temu system kolejkowy jest w stanie odczytać opcje jemu właściwe właśnie z tych linijek i uruchomić pozostałe instrukcje, dotyczące już samego zadania obliczeniowego, z dalszej części pliku. Najważniejsze opcje i parametry komendy qsub zawiera poniższa tabela.

Opcja Parametry Opis Uwagi
-l Opcja służy do specyfikacji zasobów (rdzeni, węzłów pamięci) dla zadania. Poszczególne opcje można łączyć w jednej linii. W takim przypadku należy rozdzielić je znakiem dwukropka.
nodes=<liczba_węzłów> Parametr służy do specyfikacji liczby wezłów
ppn=<liczba rdzeni> Liczba żądanych rdzeni na każdym węźle
pmem=<ilość pamięci> Ilość pamięci operacyjnej dla każdego zaalokowanego rdzenia obliczeniowego. Alternatywnie można ustawić wymaganie pamięciowe dla całego zadania za pomocą parametru mem=. O obu przypadkach wartość należy podawać w mega- lub gigabajtach, np. 1gb.
walltime=<czas obliczeń> Maksymalny czas obliczeń. Czas należy podawać w formacie DD:GG:MM:SS gdzie DD, GG, MM, SS oznaczają odpowiednio żądaną liczbę dni, godzin, minut i sekund na zadanie.
-N <nazwa_zadania> Nazwa zadania w systemie kolejkowym
-j oe Połączenie standardowego wyjścia ze standardowym wyjściem błędów podczas wykonywania obliczeń
-m b, e lub a System kolejkowy wyśle e-mail do użytkownika jeśli zadanie rozpocznie się wykonywać b, skończy wykonywać e lub zostanie przerwane a.
-M <adres@e-mail.użytkownika> Adres e-mail użytkownika na który ma zostać wysłana wiadomość o stanie zadania
-q <nazwa_kolejki> Specyfikuje nazwę kolejki do której ma trafić zadanie
-I uruchomienie zadania interaktywnego
-X w trybie interaktywnym pozwala na uruchamianie programów okienkowych

Usuwanie zadań

Do usuwania zadań służy komenda qdel. W celu sunięcia zadania z kolejki potrzebny jest również jego identyfikator numeryczny (jobid), który można wyświetlić komendą qstat. Cała sekwencja może wyglądać następująco:

qdel 12345678910

Jeśli zadania nie da się usunąć należy skontaktować się z administratorem komputera.

Wyświetlanie informacji o stanie zadań w kolejkach

Do wyświetlania informacji o zadaniach oraz kolejkach służy komenda qstat. Wywołanie komendy bez parametrów spowoduje wyświetlenie informacji o wszystkich zadaniach w kolejkach. Najczęściej używane opcje komendy qstat zebrano w tabeli poniżej.

Opcja Parametry Opis Uwagi
-q <nazwa_kolejki> Bez parametrów wyświetla informacje o dostępnych kolejkach i ich parametrach.
-u <nazwa_użytkownika> Wyświetla informacje o zadaniach danego użytkownika.
<identyfikator zadania> Wyświetla informacje o danym zadaniu.
-f Pełna informacja o wszystkich zadaniach systemu kolejkowego.

Do wyświetlenia listy zakolejkowanych oraz uruchomionych już zadań można wykorzystać także komendę zeus-jobs. Dzięki niej można wyświetlić także efektywność przeprowadzanych obliczeń oraz ich zapotrzebowanie na pamięć operacyjną. Dostępne opcje komendy pro-jobs można znaleźć pod przełącznikiem -h/--help, tj. zeus-jobs -h. Przykładowe użycie komendy:

  • informacje o wszystkich zadaniach użytkownika: zeus-jobs
  • statystyki tylko dla zadań aktualnie działających w kolejce <plgrid>plgrid wraz z informacją o węzłach (i ilości rdzeni na węźle) na których zadanie działa: zeus-jobs -rNQ plgrid
  • szczegółowe informacje na temat zadań o ID 12345 oraz 12346: zeus-jobs -f 12345,12346

Wyświetlanie informacji o zadaniach zakończonych

Do wyświetlania informacji o zadaniach już zakończonych służy komenda zeus-jobs-history. Pozwala ona wyświetlić statystyki zadań w formacie podobnym do pro-jobs. Domyślnie komenda wyświetla 20 najwcześniej zakończonych zadań użytkownika. Opcje komendy można znaleźć pod przełącznikiem -h/--help, tj. zeus-jobs-history -h. Przykłady użycia komendy:

  • standardowy output 20 ostatnich zadań: zeus-jobs-history
  • bardziej szczegółowe statystyki dla zadań 12345 oraz 12346: zeus-jobs-history -f 12345,12346
  • statystyki ostatnich 50 zadań w odwrotnej kolejności bez wyświetlania nazw kolumn: zeus-jobs-history -til 50


Przydatne zmienne systemu kolejkowego

  • $PBS_NODEFILE Zmienna wskazuje na plik z nazwami węzłów przydzielonymi dla zadania. Najczęściej wykorzystywany do określania liczby rdzeni przydzielonej zadaniu np.:
export NPROC=`cat $PBS_NODEFILE | wc -l`
  • $PBS_O_WORKDIR Zmienna wskazuje na katalog, z kkórego uruchomiono obliczenia. Najczęściej wykorzystywana do wskazania plików dla zadania np.:
cd $PBS_O_WORKDIR


Przykłady

Zadanie interaktywne

Uruchomienie zadanie interaktywnego w kolejce "l_interactive" z możliwością pracy w trybie tekstowym wymagające jednego rdzenia na jednym węźle obliczeniowym.

qsub -I -q l_interactive -l nodes=1:ppn=1

Uruchomienie zadanie interaktywnego w kolejce "l_interactive" z możliwością pracy w trybie graficznym wymagające jednego rdzenia na jednym węźle obliczeniowym.

qsub -IX -q l_interactive -l nodes=1:ppn=1

Uwaga: W przypadku chęci skorzystania z trybu graficznego należy pamiętać o połączeniu się z maszyną dostępową klastra w sposób umożliwiający przenoszenie tego trybu.

Zadanie jednordzeniowe

Uruchomienie z linii poleceń zadania w kolejce "l_infinite" wymagające jednego rdzenia na jednym węźle obliczeniowym:

qsub -q l_infinite -l nodes=1:ppn=1 nazwa_skryptu_do_uruchomienia

W przypadku skryptu należy użyć poniższych wpisów:

#PBS -q l_infinite
#PBS -l nodes=1:ppn=1

Zadanie rezerwujące cały węzeł obliczeniowy

W pierwszej kolejności należy wiedzieć, czy na danej maszynie wszystkie węzły obliczeniowe mają tę samę liczbę rdzeni. TODO Uruchomienie z linii poleceń zadania w kolejce "l_infinite" rezerwujące cały 12-rdzeniowy węzeł obliczeniowy:

qsub -q l_infinite -l nodes=1:ppn=12 nazwa_skryptu_do_uruchomienia

W przypadku skryptu należy użyć poniższych wpisów:

#PBS -q l_infinite
#PBS -l nodes=1:ppn=12

Zadanie rezerwujące po X procesorów na Y wezłach obliczeniowych

Uwaga! Jeżeli używanych jest więcej, niż jeden węzeł obliczeniowy, wartość parametru ppn (ilość procesorów na węzeł, w tym przypadku X) musi wynosić maksymalną ilość procesorów na węźle (dla węzłów z procesorami Intel: 12; dla procesorów AMD: 64).

Uruchomienie z linii poleceń zadania w kolejce "l_infinite" rezerwujące po X procesorów na Y wezłach obliczeniowych:

qsub -q l_infinite -l nodes=Y:ppn=X nazwa_skryptu_do_uruchomienia

W przypadku skryptu należy użyć poniższych wpisów:

#PBS -q l_infinite
#PBS -l nodes=Y:ppn=X