Centrum Informatyczne Trójmiejskiej Akademickiej Sieci Komputerowej

PBS

Spis treści

Informacje ogólne

Portable Batch System (PBS) jest to system wsadowego przetwarzania zadań i zarządzania zasobami obliczeniowymi. Pozwala na kolejkowanie zadań, zarządzanie ich atrybutami, uruchamianie i zwracanie wyników obliczeń do użytkownika.

Pod pojęciem PBS kryje się kilka wersji systemu kolejkowego:

W TASKu, do czerwca 2005 stosowany był OpenPBS 2.3.16, obecnie został zastąpiony prze TORQUE. Niniejszy opis odnosi się do systemu TORQUE.

Podstawowe funkcje systemu PBS czyli wstawienie zadań do kolejki, monitorowanie i zarządzanie zadaniami są realizowane za pomocą polceń qsub, qstat, qdel.

Serwer systemu jest posadowiony na holku, zadania mogą być zlecane na klaster holk. Komendy użytkownika są dostępne na holku i karaweli.

Maui Scheduler

PBS jest jest systemem o budowie modularnej. Jedym z wydzielonych modułów jest moduł szeregujący (scheduler). Autorzy systemu PBS dopuszczają a nawet zalecają stosowanie różnych schedulerów w zależności od potrzeb ośrodka. Jednym z takich schedulerów współpracujących z PBS jest Maui rozwijany jako osobny pakiet oprogramowania. W TASKu do szeregowania zadań zastosowany został ten właśnie program.

Pakiet ten oprócz poszerzonej funkcjonalności szeregowania, przydziału zasobów i uruchamiania zadań dostarcza również pewnych dodatkowych komend użytkownika. Pozwalają one monitorować dodatkowe - w stosunku do standardowych poleceń PBS'a, parametry zadań zakolejkowanych i uruchomionych, a także samych kolejek, oraz statystyk wykorzystania zasobów.

Strona pakietu: http://www.clusterresources.com/products/maui/

Podstawowe funkcje PBS

Wstawianie zadań do kolejek - polecenie qsub

Polecenie qsub służy do wstawianie zadań do systemu. Opcja -l pozwala zdefiniować wymagane zasoby i limity (szczegółowo opisane w manualu pod hasłem pbs_resources(man pbs_resources))

Do uruchamiania zdań w systemie PBS zaleca sie stworzenie skryptu uruchomieniowego. Skrypty używa się w następujący sposób:

qsub [opcje qsub] < skrypt.csh

Polecenie qsub interpretuje linie zaczynające się od wyrażenia #PBS i pobiera z nich swoje opcje tzn. wyrażnie

/bin/echo -e "#PBS -N Testowe\n hostname" | qsub 

jest równoważne

/bin/echo -e "hostname" | qsub -N Testowe

Przykładowy skrypt jest przedstawiony poniżej



#nazwa zadania,  musi sie zaczynac litera
#PBS -N zadanie1

# kolejka
#PBS -q batch

# wymagania: 2 nody po 2 dwurdzeniowe (2*2) procesory na kazdym nodzie, 
# obliczenia zakoncza sie w czasie  4 godzin
#PBS -l nodes=2:ppn=8,walltime=04:00:00

# wysylanie poczty kiedy zadanie sie skonczy
#PBS -m e

cd $PBS_O_WORKDIR
rungms_pbs zadanie1 64 8 >& zadanie1.log

Specyfikacja zasobów

Wymagane przez zadanie zasoby specyfikuje się za pomocą opcji -l dla polecenia qsub Szczegółowa dokumentacja zasobów jest dostępna w podręczniku systemowym man pod hasłem pbs_resources.

Zadanie kierowane na holka powinny specyfikować przynajmniej wymagania co do nodów:

nodes=N:ppn=P

gdzie N to liczba nodów, P to liczba procesorów na nodzie. Należy pamiętać, że nody holka mają po 2 dwurdzeniowe procesory i specyfikowanie większej liczby nie ma sensu. Domyślnie są przyznawane dwa dwurdzeniowe procesory (ppn=4), dlatego należy pamiętać aby dla zadań jednoprocesorowych wyspecyfikować ppn=1, ponieważ system przydzieli dwa procesory a zadanie wykorzysta tylko jeden co jest niezgodne z zasadami korzystania z zasobów.

np.

echo "./program_szeregowy a.inp" | qsub -q dluga -N zadanie1 -l nodes=1:ppn=1

Wskazane jest specyfikowanie czasu potrzebnego na skończenie obliczeń za pomocą zasobu walltime w postaci ciągu HH:MM:SS np. wiemy, że zadanie skończy się w ciągu 16 godzin:

echo "./moj_program a.inp" | qsub -q duza -N zadanie1 -l nodes=2:ppn=4,walltime=16:00:00

Monitorowanie zadań i kolejek - polecenie qstat

Polecenie qstat służy do monitorowania statusu zadań i kolejek. Samo polecenie, bez żadnych argumentów wyświetla długą listę zadań w kolejkach.

Wyświetlanie zadań użytkownika janko

qstat -u janko

Zadania wraz z nodami na których są uruchomione

qstat -n 

Obszerna informacja o zadaniu o identyfikatorze JOBID

qstat -f JOBID

Informacje o systemie i kolejkach

Lista i stan kolejek

qstat -Q

Kolumna Ena pokazuje czy kolejka pozwala na wstawianie zadań. Kolumna Str pokazuje czy zadania znajdujące się w kolejce są uruchamiane czy nie. Kolejkowanie i startowanie zadań może być czasowo wstrzymane przez administratora.

Krótka informacja o stanie serwera

qstat -B 

Obszerna informacja o kolejce

qstat -Qf nazwa_kolejki

Usuwanie zadań - polecenia qdel i qsig

Polecenie qdel służy do usuwania zadań z systemu kolejkowego. Użycie:

qdel JOBID

Czasami zdarza się, że pomimo iż upłynął czasu przeznaczony na obliczenia, zadanie nie zostało prawidłowo usunięte z noda obliczeniowego i serwer PBS wysyła komunikaty o konieczności zakończenia zadania. W takiej sytuacji może być pomocne polecenie

qsig -s0 JOBID

Komendy maui

  • showq
  • showbf
  • checkjob
Komendy pakietu maui, ich opcje i zastosowanie
Komenda Opcje i argumenty Znaczenie



showq lista zadań w kolejkach z podziałem na uruchomione, oczekujące i blokowane,


showq -i lista zadań oczekującyh z informacją o priorytecie


showbf lista procesorów dostępnych poza kolejnością dla mniejszych i krótszych zadań (backfill)


checkcjob JOBID Informacje o zadniu według maui. Spodziewany czas uruchomienia, komunikaty o wstrzymaniu, informacje o rezerwacji zasobów


checkjob -v JOBID Dla zadania uruchomionego podaje wykorzystanie procesorów.


showstart JOBID najwcześniejszy możliwy termin startu zadania


showstart

Konfiguracja kolejek

Zobacz: Zasady systemów kolejkowych w TASKu

Przykłady skryptów

Przykładowe skrypty do uruchamiania zadań w systemie PBS znajdują się w katalogu /apl/pbs/examples

Przykłady wykorzystania zaawansowanych funkcji systemu

Długoterminowe planowanie zadań

Polecenie qsub umożliwia wstawienie zadań z podaniem terminu przed którym zadanie nie zostanie uruchomione. Robi się to za pomocą opcji -a. Funkcjonalność tę można wykorzystać do zarezerwowanie miejsca w kolejce w sytuacji gdy np. czekamy na wyniki obliczeń z innego zadania, o znanym terminie zakończenia, lub kiedy przygotowywane są dane wejściowe.

Planowanie uruchamiania zadań z wyprzedzeniem daje możliwość skrócenia czasu oczekiwania zadań w kolejce oraz bardziej optymalnego przydziału zasobów przez system kolejkowy.

Wstrzymywanie zadań

PBS umożliwia wstrzymanie zadań oczekujących w kolejce. Zadanie takie nie są brane pod uwagę przez system przy uruchamianiu. Funkcję tę można wykorzystać do zarezerwowanie miejsca w kolejce jeśli wiadomo, że niedługim czasie będziemy musieli uruchmić jakieś zadanie, np. będzie konieczność restartu obliczeń z punktu kontrolnego. Aby to uzyskać należy wstawić do kolejki zadanie ze wskazaniem na dane wejściowe, które mogą nie istnieć i zostaną utworzone później. Do polecenia qsub dodajemy opcję -h. Zadanie zostanie wstawione do kolejki ale, będzie miało status Hold i nie zostanie uruchomione nawet gdy będą wolne zasoby. Kiedy dane wejściowe zostaną przygotowane komendą qrls należy zwolnić blokadę zadania:

qrls JOBID

Zadanie nadal będzie w kolejce, ale ze względu na czas oczekiwania jego priorytet będzie wyższy niż gdyby zostało wstawione do kolejki dopiero teraz.

Zadanie oczekujące w kolejce może również zostać wstrzymane za pomocą polecenia

qhold JOBID

Funkcję tę można wykorzystać np. w przypadku kiedy dla zadania już wstawionego do kolejki zajdzie konieczność zmiany w pliku wejściowym.

Backfill

Kiedy w kolejce znajdzie się zadanie wymagające dużej liczby procesorów, a zadania kończące się zwalniają niewielką ilość procesorów, system kolejkowy musi wstrzymać uruchamianie nowych małych zadań i gromadzić pulę procesorów dla zadania dużego. Powstaje w ten sposób grupa wolnych procesorów, które pozostają bezczynne aż do uruchomienia dużego zadania. Ponieważ system wie kiedy kończą się poszczególne zadania, jest w stanie określić kiedy będzie mógł uruchomić zadanie duże. Powstaje w ten sposób "okno" czasowe z pewną pulą procesorów. Jeśli w kolejce znajduje się zadanie o wymaganiach co do procesrów i czasu mieszczących się w tym oknie, to może ono zostać uruchomione poza kolejnością.

Komenda showbf (z Maui) pokazuje czy aktualnie są dostępne procesory do wykorzystania poza kolejnością wraz z dostępnym limitem czasu, np:

> showbf
backfill window (user: 'janko' group: 'users' partition: ALL) Fri Jun 10 10:42:48

 6 procs available for       6:36:15
 

informuje, że są jest dostępnych 6 procesorów na ponad 6 godzin. Jednak warto dodać do showbf specyfikację kolejki, ponieważ nie wszystkie nody są dostępne dla wszystkich kolejek, np. w tej samej sytuacji zapytanie:

> showbf -c szybka
backfill window (user: 'janko' group: 'staff' partition: ALL) Fri Jun 10 10:43:04

 32 procs available for       6:34:39
  4 procs available with no timelimit

pokazuje, że dla kolejki szybka są dostępne aż 32 procesory.

Aby skorzystać z tej puli należy wstawić zadanie z limitem czasu i procesorów nie większym niż podane przez showbf np.

> echo "./rungms  exam.inp  " | qsub -l nodes=8:ppn=4,walltime=06:10:00 -q szybka
    

Zadanie zostanie uruchomione przez PBS, o ile w systemie nie znajdzie sie inne zadanie o wyższym priorytecie.

Z punktu widzenia dobierania optymalnej kolejności uruchamiania zadań warto zawsze dodawać parametru walltime do specyfikacji zasobów zadania w poleceniu qsub zamiast zdawać się na domyślny limit kolejki.

Zobacz też