System kolejkowy

Z Komputery Dużej Mocy w ACK CYFRONET AGH
Skocz do:nawigacja, szukaj

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