PBSPro: Różnice pomiędzy wersjami

Z KdmWiki
Przejdź do nawigacji Przejdź do wyszukiwania
 
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
 
<small>< [[Podręcznik użytkownika KDM]] < [[System kolejkowy]]</small>
 
<small>< [[Podręcznik użytkownika KDM]] < [[System kolejkowy]]</small>
 
{{aplikacja|nazwa=PBSPro|logo=|serwery=[[Bem]]}}
 
{{aplikacja|nazwa=PBSPro|logo=|serwery=[[Bem]]}}
'''PBS Profesional''' (PBSPro) jest płatną wersją [[system kolejkowy|systemem kolejkowania]] i dystrybucji obciążenia [[OpenPBS]]. PBSPro działa na wielu platformach unix'owych (włącznie z heterogenicznymi klastrami stacji roboczych), superkomputerach i systemach masywnie równoległych.  
+
'''PBS Profesional''' (PBSPro) jest płatną wersją [[system kolejkowy|systemu kolejkowania]] i dystrybucji obciążenia [[OpenPBS]]. PBSPro działa na wielu platformach unix'owych (włącznie z heterogenicznymi klastrami stacji roboczych), superkomputerach i systemach masywnie równoległych.  
  
 
Rozwijaniem i dystrybucją PBSPro zajmuje się firma [http://www.altair.com/index.htm Altair].  
 
Rozwijaniem i dystrybucją PBSPro zajmuje się firma [http://www.altair.com/index.htm Altair].  
 
== Kolejki ==
 
Uruchamianie obliczeń na klastrach odbywa się w ramach kolejek, które różnią się między sobą priorytetem, limitami czy prawami dostępu (a czasem również dostępnymi zasobami):
 
 
=== Bem ===
 
W typowych przypadkach wyboru odpowiedniej kolejki dokonuje system kolejkowy na podstawie wymagań odnośnie czasu wykonania. Zadania należy zlecać do kolejki '''main''' podając limit czasu (przy użyciu konstrukcji opisanej w dalszej części artykułu: '''-l walltime=X''').
 
 
Uruchamianie obliczeń na klastrze [[Bem]] zazwyczaj nie wymaga podawania kolejki. Co więcej, użytkownik nie ma możliwości bezpośredniego wstawiania zadań do kolejek normal oraz infinity. Zadania należy wysyłać do kolejki main, która przekieruje je do odpowiedniej kolejki na podstawie limitu czasu.
 
 
== Zasoby ==
 
Po wyborze odpowiedniej kolejki należy zadeklarować ilość wymaganych zasobów.
 
 
Przydział zasobów może odbywać się w jednej, spójnej części (dla zadań szeregowych lub zrównoleglonych w obrębie jednego węzła) lub kilku (dla zadań zrównoleglonych przy użyciu bibliotek MPI). Deklarację buduje się używając wyrażenia
 
'''select''' dla parametru '''-l''' polecenia '''qsub''' (opisanego w dalszej części). Jej format jest następujący:
 
 
<pre>
 
select=X:zasób1=wartość1:zasób2=wartość2+Y:zasób3=wartość3:zasób4=wartość4
 
</pre>
 
gdzie:
 
* '''X''' - liczba części pierwszego zbioru zasobów
 
* '''zasób1=wartość1:zasób2=wartość2''' - opis pierwszego zbioru zasobów
 
* '''Y''' - liczba części drugiego zbioru zasobów
 
* '''zasób3=wartość3:zasób4=wartość4''' - opis drugiego zbioru zasobów
 
Liczba zbiorów zasobów może być różna (równa 1 lub większa). Alokowane części mogą (ale nie muszą) znaleźć się na różnych węzłach.
 
 
Dostępne parametry:
 
* '''ncpus''' - liczba rdzeni obliczeniowych
 
** domyslnie: 1
 
** maksymalnie 24 (na klastrze [[Bem]])
 
** 4 jeżeli korzystamy z kart graficznych na węzłach '''Tesla'''
 
* '''mem''' - rozmiar pamięci
 
** domyślnie: 2000 MB (na klastrze [[Bem]])
 
** maksymalnie (na klastrze [[Bem]]):
 
*** 60 000 MB na większości węzłów
 
*** 125 000 MB na 32 węzłach
 
** 16 384 MB jeżeli korzystamy z kart graficznych na węzłach '''Tesla'''
 
* '''ngpus''' - liczba kart graficznych
 
** domyślnie: 0 (zadanie trafi na węzeł z GPU dopiero jeżeli użytkownik tego zażąda)
 
** maksymalnie: 2
 
{{uwaga2| Zadanie wymagające GPU trafi na specyficzny węzeł roboczy. Więcej informacji o tym można znaleźć w artykule [[Tesla]]}}
 
 
Osobnym słowem kluczowym, którego używa się podczas żądania zasobów, jest liczba procesów MPI zadania:
 
* '''mpiprocs''' - liczba procesów MPI
 
** domyślnie: 1
 
** maksymalnie 24 (na klastrze [[Bem]])
 
** 4 jeżeli korzystamy z kart graficznych na węzłach '''Tesla'''
 
 
Należy skorzystać z tego parametru, kiedy w jednej części alokacji chcemy uruchomić więcej niż jeden proces MPI.
 
 
; Przykładowe definicje wymagań
 
Zadanie uruchamia 4 procesy w obrębie jednego węzła i wymaga 4096 MB RAM (po 1024 MB na proces):
 
<pre>
 
select=1:ncpus=4:mem=4096MB
 
</pre>
 
Zadanie uruchamia 8 procesów MPI, z których każdy wymaga 512 MB RAM
 
<pre>
 
select=8:ncpus=1:mem=512MB
 
</pre>
 
Zadanie uruchamia 32 procesy MPI, po 4 w każdej części alokacji (i domyślne 2000 MB na każde 4 procesy):
 
<pre>
 
select=8:ncpus=4:mpiprocs=4
 
</pre>
 
Zadanie wymaga 16GB RAM (i jednego rdzenia)
 
<pre>
 
select=1:mem=16GB
 
</pre>
 
Zadanie wymaga 1 karty GPU i 4 GB pamięci
 
<pre>
 
select=1:ngpus=1:mem=4GB
 
</pre>
 
 
== Wstawianie zadań ==
 
Do wstawiania zadań do kolejki służy polecenie '''qsub'''. {{uwaga2|Należy je wykonywać na węźle dostępowym!}} Opis zadania powinien być zawarty w skrypcie powłoki. Natępnie taki skrypt przekazywany jest do kolejki jako parametr polecenia qsub (lub na standardowe wejście tej komendy). Najważniejsze parametry polecenia można znaleźć poniżej:
 
* '''-q''' - wybór kolejki
 
* '''-l''' specyfikacja wymagań - wartości parametru mogą być następujące
 
** '''select=''' - opis wymagań
 
** '''software=''' - informacja o używanym oprogramowaniu
 
{{uwaga2| Proszę korzystać z powyższego parametru - pozwala to administratorom sporządzać statystyki wykorzystania}}
 
* '''-N''' - nazwa zadania (jej długość nie może przekraczać 12 znaków)
 
* '''-m''' - włączenie wysyłania powiadomień o zdarzeniach
 
** '''b''' - o rozpoczęciu zadania
 
** '''e''' - o zakończeniu zadania
 
* '''-I''' - zadanie interaktywne (w tym przypadku nie należy przekazywać skryptu)
 
* '''-X''' - przekierowanie wyświetlania (ma sens w przypadku zadań interaktywnych, wymaga logowania z przekierowaniem wyświetlania
 
 
Cenną cechą programu '''qsub''' jest możliwość przekazywania parametrów w skrypcie podanym jako argument, poprzez linie zaczynające się od:
 
<pre>
 
#PBS
 
</pre>
 
 
== Sprawdzanie stanu systemu kolejkowego ==
 
Do sprawdzenia stanu kolejki służy polecenie '''qstat'''. Można korzystać z następujących jego parametrów:
 
* '''-r''' - pokazuje uruchomione zadania
 
* '''-i''' - pokazuje zadania oczekujące
 
* '''-u''' - pokazuje zadania wybranego użytkownika
 
* '''-f''' - pokazuje szczegółowe informacje o zadaniach (lub zadaniu, jeżeli podamy jego identyfikator po parametrze)
 
 
== Usuwanie zadań ==
 
Jeżeli z jakiegoś powodu istnieje potrzeba usunięcia zadania - należy skorzystać z polecenia '''qdel''', które przyjmuje jako parametr identyfikator zadania. Można kasować zadania zarówno oczekujące w kolejce jak i uruchomione.
 
 
== Rezerwacje ==
 
Może się zdarzyć, że dostęp do zasobów potrzebny jest w określonym czasie np. za 3 tygodnie w poniedziałek między godziną 8 a 16. W takich przypadkach należy skorzystać z rezerwacji - '''powoduje to powstanie nowej kolejki''', do której wstawione zadania nie będą konkurować o dostęp z innymi zadaniami. Należy jednak pamięć, że nie zawsze będzie to możliwe (będzie tylko wtedy kiedy system kolejkowy w żądanym czasie będzie w stanie zapewnić zasoby). Tworzenie rezerwacji odbywa się poleceniem '''pbs_rsub''', którego najważniejsze parametry to:
 
* '''-R''' - czas rozpoczęcia rezerwacji w formacie YYYYMMDDHHmm (201302010456 oznacza w takim przypadku 4:56 01.02.2013)
 
* '''-E''' - czas zakończenia rezerwacji w formacie YYYYMMDDHHmm
 
* '''-l''' - specyfikacja zasobów rezerwacji (w formacie takim, jak w przypadku zadań)
 
* '''-r''' - reguła rekurencji (jeżeli rezerwacja ma się powtarzać cyklicznie, więcej na ten temat w manualu polecenia pbs_rsub)
 
* '''-U''' - lista użytkowników, którzy mogą korzystać z rezerwacji
 
 
Do wyświetlenia informacji o rezerwacjach służy polecenie '''pbs_rstat'''. Bez parametrów listuje ono założone rezerwacje, a szczegóły o wybranej można zobaczyć dodając parametr '''-f''' i identyfikator. Aby usunąć rezerwację należy użyć polecenia '''pbs_rdel'''.
 
 
== Przykłady ==
 
=== Uruchomienie obliczeń na postawie skryptu ===
 
* zawartość skryptu uruchom.sh
 
<source lang=bash>
 
#!/bin/bash
 
#PBS -q main
 
#PBS -l select=1:ncpus=2:mem=2048MB
 
#PBS -l software=test_qsub
 
#PBS -m be
 
 
# wejscie do katalogu, z ktorego zostalo wstawione zadania
 
cd $PBS_O_WORKDIR
 
 
# uruchom program
 
./test1 > wynik.txt
 
</source>
 
* wstawienie skryptu
 
<pre>
 
qsub uruchom.sh
 
</pre>
 
 
=== Uruchomienie zadania interaktywnego ===
 
<pre>
 
qsub -I -l select=1:ncpus=1:mem=2048MB -l software=CFX_14.5
 
</pre>
 
 
=== Przekazanie skryptu przez standardowe wejście '''qsub''' ===
 
* zawartość pliku skrypt.sh
 
<source lang=bash>
 
#!/bin/bash
 
cat << EOF | qsub
 
#!/bin/bash
 
#PBS -q main
 
#PBS -l select=1:mem=512MB
 
#PBS -l software=qsub_stdin
 
#PBS -m be
 
 
# wejscie do katalogu, z ktorego zostalo wstawione zadania
 
# \ przez $ jest wymagany, aby powloka nie podmienila
 
# $PBS_O_WORKDIR na wartosc podczas wstawiania - tylko
 
# podczas dzialania zadania na wezle
 
 
cd \$PBS_O_WORKDIR
 
 
# uruchom program
 
./test1 > wynik.txt
 
EOF
 
</source>
 
* wstawienie zadania:
 
<pre>
 
chmod +x skrypt.sh
 
./skrypt.sh
 
</pre>
 
 
Więcej o poleceniu '''qsub''' można znaleźć w manualu - poprzez uruchomienie polecenia:
 
<pre>
 
man qsub
 
</pre>
 
 
=== Zlecenie rezerwacji ===
 
Próba utworzenia rezerwacji w bieżącym dniu (dlatego pominięto rok, miesiąc i dzień w wymaganiach) od 12:00 do 14:00, powtarzającej się w poniedziałki, środy i piątki aż do 31.12.2013, na zasobach składających się z dwóch części po 1 rdzeniu i 2000 MB RAM, z której mogą korzystać użytkownicy user1 oraz user2
 
<pre>
 
pbs_rsub -R 1200 -E 1400 -r "FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20131231" -l select=2:ncpus=1:mem=2000MB -U user1,user2
 
</pre>
 
Jeżeli utworzenie rezerwacji będzie możliwe - system kolejkowy wyśle wiadomość (na adres zarejestrowany w bazie) z potwierdzeniem.
 
  
  

Aktualna wersja na dzień 07:36, 3 mar 2016

< Podręcznik użytkownika KDM < System kolejkowy

PBSPro
Serwery
Bem
Kontakt
kdm@wcss.pl

PBS Profesional (PBSPro) jest płatną wersją systemu kolejkowania i dystrybucji obciążenia OpenPBS. PBSPro działa na wielu platformach unix'owych (włącznie z heterogenicznymi klastrami stacji roboczych), superkomputerach i systemach masywnie równoległych.

Rozwijaniem i dystrybucją PBSPro zajmuje się firma Altair.


Linki zewnętrzne


Zobacz też: konfiguracja kolejek PBS?