System kolejkowy
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.
Spis treści
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