Efektywne wykorzystanie klastra Zeus w obliczeniach naukowych

Transkrypt

Efektywne wykorzystanie klastra Zeus w obliczeniach naukowych
Efektywne wykorzystanie klastra Zeus w obliczeniach naukowych
Maciej Czuchry, Klemens Noga
ACK Cyfronet AGH
ACK Cyfronet AGH, 23 marca 2015
Plan szkolenia
Rejestracja
Dostęp do klastra
Przeprowadzanie obliczeń
klaster Zeus
system kolejkowy
szczegóły obliczeń
najlepsze praktyki
Dokumentacja i pomoc dla użytkowników
2
Dostęp do klastra Zeus
Klaster Zeus pracuje w środowisku Linux -­‐ Scientific Linux 6
Logowanie na węzeł dostępowy UI (User Interface) klastra:
wykorzystując bezpieczny protokół SSH:
ssh [email protected]
w środowisku Windows np. programem PuTTY
(http://www.chiark.greenend.org.uk/~sgtatham/putty/)
tryb graficzny – zdalne wyświetlanie wykorzystując X11
(dla Windows jako serwer X11 np. Xming)
kopiowanie plików
scp plik [email protected]: w środowisku Windows np. program WinSCP (http://winscp.net/)
Nie wolno wykonywać żadnych obciążających operacji na węźle dostępowym klastra
Sprawiedliwym przydzielaniem zasobów zajmuje się system kolejkowy Torque/PBS
3
Dostęp do klastra Zeus
Zeus składa się z węzła dostępowego (UI) oraz grup węzłów o różnych parametrach
tradycyjne węzły (1198 węzłów, w tym 136 węzłów z dużą ilością RAM)
vSMP – zespół maszyn wirtualnych (kilka węzłów)
GPGPU – węzły zawierające procesory graficzne GPGPU (44 węzły, 208 kart GPGPU)
Własność
Zeus
Zeus BigMem
Zeus vSMP
Zeus GPGPU
Szybkość CPU
2.26-­‐2.67 GHz
2.67; 2.30 GHz
2.67 GHz
2.93; 2.40 GHz
RAM
16, 24 GB
96, 256 GB
do 6 TB
72, 96 GB
Ilość rdzeni na węźle
8, 12 12, 64
do 768
12
InafiniBand
tak
tak
–
tak
Dodatkowe
–
–
RAMDysk
karty GPGPU
4
Zeus – systemy plików
Składowanie danych -­‐ dostęp po NFS (dość powolny, nie używać do obliczeń)
$HOME – katalog domowy użytkownika quota 7 GB
codzienny backup
$STORAGE długotrwałe przechowywanie plików
quota 100GB
Dyski na pliki tymczasowe (tzw. scratch)
$TMPDIR wskazuje na katalog lokalny na węźle obliczeniowym
dostępny jedynie z węzła do którego jest podłączony
dostępny tylko w trakcie wykonywania zadania
$SCRATCH rozproszony system plików Lustre
dostępny z każdego z węzłów klastra
Dla użytkowników PL-­‐Grid na podstawie grantów obliczeniowych (SLA) dostępna dodatkowa przestrzeń na składowanie plików ($PLG_GROUPS_STORAGE)
5
Oprogramowanie
Modules – sposób zarządzania oprogramowaniem
Aplikacje często wymagają specyficznego środowiska uruchomieniowego (m.in. zmiennych środowiskowych, dostępu do bibliotek)
Narzędzie Modules umożliwia proste ustawianie środowiska uruchomieniowego dla programów niezależnie od specyfiki maszyny dostępowej.
Zalety:
łatwe ustawianie środowiska uruchomieniowego programów
przenoszenie skryptów obliczeniowych między maszynami
możliwość łatwego uruchamiania różnych wersji programów (często o skonfliktowanych środowiskach uruchomieniowych)
transparentne dla użytkownika uruchamianie wersji zoptymalizowanych na konkretny typ węzła obliczeniowego
Wady:
jedno dodatkowe polecenie do zapamiętania
6
Oprogramowanie
Każda aplikacja zainstalowana na klastrze Zeus ma swój moduł
<gałąź>/<nazwa-oprogramowania>/<wersja>
Rodzaje gałęzi
apps -­‐ dla większości programów naukowych
compilers -­‐ dla kompilatorów
gpu -­‐ dla programów naukowych wykorzystujących GPGPU
libs -­‐ dla bibliotek
tools -­‐ dla programów narzędziowych (np. Python)
plgrid -­‐ dla programów dostępnych w Infrastrukturze PL-­‐Grid
np. compilers/intel/14.0 lub apps/matlab/R2013b
7
Oprogramowanie
Załadowanie środowiska umożliwiającego uruchomienie aplikacji
module add <nazwa-modułu> (np. module add
apps/gaussian)
module load <nazwa-modułu> (np. module load
apps/matlab)
Usunięcie modułu
module rm <nazwa-modułu> (np. module rm
apps/gaussian)
module unload <nazwa-modułu> (np. module
unload apps/matlab)
Listowanie wszystkich dostępnych modułów
module avail
module avail tools (tylko z poddrzewa tools)
module avail apps/matlab (dostępne wersje oprogramowania Matlab)
8
Oprogramowanie
Listowanie załadowanych modułów:
module list
Usuwanie wszystkich załadowanych modułów
module purge
Moduł ustawiający zmienną do rozproszonego zasobu na pliki tymczasowe ($SCRATCH):
module add tools/scratch
gdy ustawiany wewnątrz zadania obliczeniowego ustawia zmienną SCRATCHDIR wskazującą na katalog tymczasowy zadania utworzony na zasobie Lustre
9
System kolejkowy PBS
System kolejkowy
zarządza zleconymi zadaniami obliczeniowymi
zarządza zasobami klastra
przydziela zasoby zadaniom obliczeniowym
dba o sprawiedliwą dystrybucję zasobów
Zadania obliczeniowe są umieszczane w kolejkach (ang. queue) i uruchamiane w zależności od ich priorytetu.
Priorytet zależy m.in. od:
wielkości zasobów przyznanych w grancie obliczeniowym
ilości zażądanych przez zadanie zasobów i ich dostępności
szczególnie istotny jest maksymalny czas trwania obliczeń
zasobów klastra zużywanych aktualnie przez danego użytkownika
10
System kolejkowy PBS -­‐ komendy
Użytkownik komunikuje się z systemem kolejkowym za pomocą komend PBS
qsub
qstat
qdel
qalter
– umieszcza zadanie w kolejce – wyświetla status zadań – usuwa zadanie z kolejki
– zmiana parametrów zakolejkowanego zadania Każde zadanie w systemie kolejkowym ma swój własny, unikalny identyfikator zadania tzw. jobID
11
System kolejkowy PBS – zlecania zadania
Do umieszczenia zadania w kolejce systemu kolejkowego służy komenda qsub
Komendy opisujące wykonywane zadanie mogą być zebrane w tzw. skrypt uruchomieniowy i przekazywane systemowi kolejowemu poleceniem
qsub skrypt
Przykładowy skrypt
#!/bin/env bash
#polecenia wykonywane po uruchomieniu zadania
echo "Obliczenia uruchomione na WN:"; hostname
module add apps/matlab
matlab -nodisplay <matlab.m >matlab.out
12
System kolejkowy PBS – monitorowanie zadań
Do sprawdzania statusów zadań w systemie kolejkowym służą komendy qstat lub zeus-jobs
Statusy zadań:
zakolejkowane Q
działające R
Dodatkowe przydatne filtry qstat –u $USER – informacja o zadaniach użytkownika $USER
qstat –n <jobID> – informacja o węzłach przydzielonych zadaniu
qstat -q – ogólna sytuacja na klastrze
zeus-jobs
wydajności
zeus-jobs
zeus-jobs
zadaniach zeus-jobs
-e- lub zeus-jobs –e+ - sortowanie po –w - zadania o niskiej wydajności
-f (<jobID>) - szczegółowe informacje o –h - wyświetlenie pomocy 13
Dostępne kolejki
Nazwa
max czas
Uwagi
l_test
0:15:00
kolejka do testów
l_prio
1:00:00
l_short
3:00:00
l_long
336:00:00
l_exclusive
336:00:00
zadania zajmujące całe węzły
l_interactive
72:00:00
zadania interaktywne
l_infinite
2160:00:00
*
l_bigmem
336:00:00
węzły z dużą ilością pamięci*
gpgpu
336:00:00
kolejka GPGPU*
vsmp
-­‐
kolejka vSMP*
domyślna
* dostęp na żądanie
qstat –Q –f <nazwa-kolejki> – szczegółowe parametry kolejki
qstat <nazwa kolejki> – wyświetlenie zadań w konkretnej kolejce
14
PBS – przykładowy skrypt Gaussian
#!/bin/env bash
#polecenia wykonywane po uruchomieniu zadania
echo "Obliczenia uruchomione na WN:"; hostname
module add apps/gaussian
g09 h2o.gjf
Opcje PBS pozwalają dostarczyć systemowi kolejowemu informacje o zasobach, które zadanie zmierza zużyć. Sposób wywołania:
w linii poleceń polecenia qsub [opcje PBS]
w początkowych linijkach skryptu uruchomieniowego poprzedzone dyrektywą #PBS
Opcje wyspecyfikowane w linii poleceń nadpisują opcje podane w skrypcie
15
PBS – przykładowy skrypt Gaussian
#!/bin/env bash
#polecenia wykonywane po uruchomieniu zadania
echo "Obliczenia uruchomione na WN:"; hostname
echo "Biezacy katalog:"; pwd
cd $PBS_O_WORKDIR
echo "Biezacy katalog:"; pwd
module add apps/gaussian
g09 h2o.gjf
Skrypt zadania zawsze rozpoczynany jest w katalogu HOME na węźle obliczeniowym (WN). Przejście do katalogu, z którego wysłano skrypt przez zmienną PBS_O_WORKDIR
16
PBS – zmienne środowiskowe
PBS dodaje zadaniom zmienne środowiskowe ułatwiające prace
Zmienna
Opis
PBS_JOBID
identyfikator zadania (jobID)
PBS_O_WORKDIR ścieżka, z której wysłano zadanie do PBS
PBS_NP
ilość procesorów przydzielonych zadaniu
PBS_NODEFILE
plik z nazwami węzłów przydzielonych zadaniu
PBS_GPUFILE
plik z nazwami GPGPU przydzielonych do zadania
PBS_NODENUM
numer węzła obliczeniowego zadania (0 – n-­‐1)
TMPDIR
ścieżka do katalogu na pliki tymczasowe
Dodatkowo po załadowaniu modułu tools/scratch dostępne są zmienne
SCRATCHDIR ścieżka do katalogu na pliki tymczasowe na zasobie Lustre
17
PBS – opcje polecenia qsub
Dodatkowo po załadowaniu modułu tools/scratch dostępne są zmienne
-q
-N
-I
-X
-l
-t
-M
-m
(a)
kolejka definiuje kolejkę, do której skierowane zostanie zadanie
nazwa ustawia identyfikator zadania
zgłasza zadanie interaktywnie
przenoszenie obrazu mechanizmem X11
zasób ustawia ilość zasobów potrzebnych zadaniu
n-m,k,l uruchamia zadania tablicowe o numerach od n do m oraz k i l
<adres e-mail użytkownika> powiadomienie mailowe
bea wysyła powiadomienie na początku (b), końcu (e) lub przy błędzie Pominięcie -q kolejka umieszcza zadanie w domyślnej kolejce
Użytkownicy PL-­‐Grid
-A id_grantu ustawia grant obliczeniowy, z którego będzie korzystać zadanie
zadania bez wyspecyfikowanego grantu obliczeniowego nie zostaną przyjęte przez system kolejkowy (możliwość ustawienia grantu domyślnego)
18
PBS – specyfikacja zasobów
Dostępne rodzaje zasobów (sprecyfikowane flagą -l)
walltime maksymalny czas wykonywania zadania
nodes
ilość i rodzaj węzłów obliczeniowych
mem
maksymalna ilość pamięci wykorzystywanej przez zadanie
pmem
maksymalna ilość pamięci wykorzystywanej przez pojedynczy rdzeń obliczeniowy
Wartości liczbowe parametrów podajemy jako parametr=wartość, poszczególne zasoby oddzielając przecinkami
np. qsub -l walltime=10:00:00,nodes=1:ppn=12,mem=12gb
Format parametrów
czas hhh:mm:ss
pamięć b, kb (=1024b), mb (=1024kb), gb (=1,024mb)
węzły nodes=ilość-węzłów:ppn=liczba-rdzeni-nawęzeł:właściwości (np. nodes=2:ppn=12 – dwa węzły po dwanaście rdzeni)
19
PBS – specyfikacja zasobów
#!/bin/env bash
#PBS -l nodes=1:ppn=4
#PBS -l walltime=06:00
#PBS -l mem=128mb
#PBS -q tutorial
#polecenia wykonywane po uruchomieniu zadania
echo "Obliczenia uruchomione na WN:"; hostname
echo "Biezacy katalog:"; pwd
cd $PBS_O_WORKDIR
echo "Biezacy katalog:"; pwd
module add apps/gaussian
g09 czasteczka.gjf
20
PBS – zadania interaktywne
Pracę interaktywną umożliwiają zadania interaktywne
qsub –I
qsub –I –X gdy potrzebny graficzny tryb wyświetlania
Do pracy interaktywnej często przeznaczona jest specjalna kolejka (dla Zeusa jest to l_interactive)
W przypadku użycia trybu graficznego należy pamiętać
o zalogowaniu się na klaster z użyciem przekierowania wyświetlania X11 (np. ssh -Y -C login@serwer; w PuTTy "Enable X11 Forwarding")
włączeniu serwera X11 na maszynie, z której następuje logowanie
Nie wolno wykonywać żadnych obciążających operacji na węźle dostępowym (UI) klastra 21
PBS – usuwanie zadań -­‐ qdel
Do usuwania zadań z systemu kolejkowego służy komenda qdel
qdel <JobID>
Zadania, które są zawieszone, a nie można ich usunąć poleceniem qdel należy zgłaszać poprzez
dla użytkowników KDM – [email protected]
dla użytkowników PL-­‐Grid -­‐ Helpdesk PL-­‐Grid PL https://helpdesk.plgrid.pl lub [email protected]
22
PBS -­‐ Zmiana parametrów zadań – qalter
Do zmian parametrów zadań w systemie kolejkowym służy komenda qalter
qalter <jobID> [zmieniane_parametry]
Przykładowe zastosowania
qalter <jobID> -l nodes=x:ppn=y
qalter <jobID> -l walltime=hhh:mm:ss
qalter <jobID> -N nowa_nazwa_zadania
qalter nie może zmieniać kolejki zadania oraz modyfikować parametrów uruchomionego zadania
23
Monitorowanie sprawności zadań -­‐ zeus-jobs
Narzędzie monitorujące sprawność wykonywania zadań
wykorzystanie zadeklarowanych procesorów
wykorzystanie pamięci
Składnia – zeus-jobs
sortowanie po sprawności zadań zeus-jobs -e- lub
zeus-jobs -e+
zadania o niskiej wydajności zeus-jobs –w
szczegółowe informacje o zadaniach zeus-jobs -f
(<jobID>)
wyświetlenie pomocy zeus-jobs –h
24
Monitorowanie sprawności zadań -­‐ zeus-jobs-history
Narzędzie monitorujące sprawność wykonywania zadań historycznych
wykorzystanie zadeklarowanych procesorów
wykorzystanie pamięci
Składnia – zeus-jobs-history
informacja o zadaniach z n poprzednich dni zeus-jobshistory –d <n>
szczegółowe informacje o zadaniu zeus-jobs-history –f
jobID
wyświetlenie pomocy zeus-jobs-history –h
25
Zlecanie zadania – dobre praktyki
Skrypt zadania zawsze rozpoczynany jest w katalogu HOME na węźle obliczeniowym. Przejście do katalogu, z którego wysłano skrypt przez zmienną PBS_O_WORKDIR
Dla każdego zadania tworzone są automatycznie pliki zawierające
standardowe wyjście nazwa.o<JobID>
standardowe wyjście błędów nazwa.e<JobID>
Powyższe pliki nie powinny być bardzo duże (nie więcej niż kilka MB).
Gdy polecenia w skrypcie przekierowują dużą ilość danych na standardowe wyjścia należy wyspecyfikować jawnie przekierowanie do pliku
standardowe wyjście komenda > plik.out
standardowe wyjście błędów komenda 2> plik.err
oba strumienie komenda &> plik.log
26
Zlecanie zadania – dobre praktyki
Przy specyfikacji każdego zadania należy zawsze
specyfikować maksymalny czas wykonania walltime
unikać stosowania kolejki l_infinite
specyfikować ilość pamięci wykorzystywanej mem (lub pmem)
tworzyć pliki zapisujące kroki obliczeń umożliwiające restart (tzw. checkpointy)
w przypadku zadań zrównoleglonych zajmować całe węzły obliczeniowe, zalecana kolejka l_exclusive
gdy zadanie przekierowuje dużą ilość danych na standardowe wyjścia należy wyspecyfikować jawnie przekierowania do pliku
środowisko obliczeniowe aplikacji i bibliotek ładować komendą module
nie ładować modułów w plikach startowych powłok (np. .bashrc) 27
Zlecanie zadania – dobre praktyki
Przy specyfikacji każdego zadania należy zawsze
nie wykorzystywać do obliczeń $HOME i $STORAGE
używać katalogów scratch
lokalne dyski scratch (zmienna $TMPDIR)
dostęp do danych tylko z jednego węzła
duża liczba operacji odczytu/zapisu małych porcji danych (<<1MB)
nieduże pliki (do ~10 GB)
rozproszony zasób scratch (Lustre; $SCRATCH oraz $SCRATCHDIR)
dostęp do danych z wielu węzłów
duże pliki tymczasowe (10+GB)
duże jednorazowe odczyty/zapisy (1+MB)
potrzebny podgląd w trakcie wykonywania
czyścić katalogi z plikami tymczasowymi po obliczeniach
28
Ćwiczenia
Pliki niezbędne do ćwiczeń znajdują się na stronie:
http://tinyurl.com/plgrid-­‐chemia
29
Rejestracja: https://portal.plgrid.pl
[email protected]
+48 12 632 33 55 wew. 312
30

Podobne dokumenty