GRMS - System Zarządzania Zadaniami Interfejs użytkownika systemu GRMS - wprowadzenie Bogdan Ludwiczak [email protected] GRMS co to jest / do czego to służy? • GRMS jest systemem.

Download Report

Transcript GRMS - System Zarządzania Zadaniami Interfejs użytkownika systemu GRMS - wprowadzenie Bogdan Ludwiczak [email protected] GRMS co to jest / do czego to służy? • GRMS jest systemem.

GRMS - System Zarządzania
Zadaniami
Interfejs użytkownika systemu
GRMS - wprowadzenie
Bogdan Ludwiczak
[email protected]
GRMS
co to jest / do czego to służy?
• GRMS jest systemem szeregowania zadań dla
dużych, rozproszonych systemów
obliczeniowych,
• Główny cel: zarządzać całym procesem
obsługi zadań obliczeniowych użytkowników
• w sposób satysfakcjonujący użytkowników
(właścicieli zadań) przy spełnieniu wymagań
zasobowych aplikacji,
• Jednocześnie administratorzy zasobów (właściciele
zasobów) zachowują pełną kontrolę nad zasobami
wykonującymi obliczenia.
GRMS
co to jest / do czego to służy?
• Przygotowany z myślą o wyzwaniach środowisk typu Grid:
– Równoważenie obciążenia między klastrami,
– Zdalne zlecanie i kontrola zadań,
– Przygotowywanie środowiska wykonawczego zadania przed jego
uruchomieniem,
– Kopiowanie plików użytkownika (files staging),
– Współpraca z innymi serwisami (CDMS, system monitorujący itp.)
– ...
• Stworzony w oparciu o mechanizmy dynamicznego odkrywania i
wyboru zasobów, zaawansowane algorytmy mapowania i
szeregowania zadań w środowiskach typu Grid
System GRMS –
Funkcjonalność
• uruchamianie zadań użytkownika
• listowanie zadań użytkownika z
uwzględnieniem zadanych kryteriów
• zarządzanie zadaniami
• pobieranie informacji o zadaniach
• znajdowanie zasobów spełniających
wymagania użytkownika
• notyfikacja
• funkcje pomocnicze
Uruchamianie zadań
użytkownika (job submission)
• najistotniejsza część funkcjonalności
• zdolność zapuszczenia zadania na
zdalnej maszynie
– najlepiej spełniającej wymagania
użytkownika
– lub na maszynie wskazanej z góry przez
użytkownika
Uruchamianie zadań
użytkownika - funkcje
• submitJob – podstawowa funkcja całego
systemu
• migrateJob – przeniesienie uruchomionego
zadania na zasób na którym zadanie będzie
wykonywane z lepszą wydajnością
• suspendJob – zawieszenie wykonywania
zadani
• resumeJob – wznowienie zawieszonego
zadania
• cancelJob – zatrzymanie zadania
listowanie zadań użytkownika
• getJobsList – zwraca listę
(identyfikatorów) zadań należących do
użytkownika, opcjonalnie listę można
ograniczyć tylko do zadań o zadanym
statusie
Cykl życia zadania
Stany zadania w systemie
GRMS
• QUEUED – zadanie zostało odebrane i
oczekuje na obsługę,
• PREPROCESSING – GRMS wykonuje pewne
kroki niezbędne przed uruchomienie zadania
– wyszukiwanie zasobów, przenoszenie
plików, itp..
• PENDING – zadanie oczekuje w systemie
kolejkowym w stanie pending
• RUNNING – zadanie jest wykonywane,
• STOPPED – zadanie zakończyło się lub
zostało zcheckpointowane, ale GRMS nie
pobrał jeszcze jego plików wyjściowych
Stany zadania w systemie
GRMS c.d.
• POSTPROCESSING – GRMS wykonuje pewne
kroki po zakończeniu wykonywania zadania,
np.: pobieranie plików wyjściowych,
czyszczenie katalogu roboczego, itp..
• FINISHED – zadanie zostało zakończone,
• SUSPENDED – zadanie zostało zawieszone,
• FAILED – wykonanie zadania nie powiodło się
• CANCELED – zadanie zostało usunięte przez
użytkownika
GRMS_JOB_ID
• Każde zadanie w systemie GRMS w momencie
zlecenia otrzymuje unikalny identyfikator:
GRMS_JOB_ID
• Wszelkie operacje na zadaniu wymagają
podania jego GRMS_JOB_ID
• Uruchomione zadanie może pobrać swoje
własne GRMS_JOB_ID z odpowiedniej
zmiennej środowiskowej ustawionej przez
GRMS’a
Zarządzanie zadaniami
• Rejestrowanie zadania w GRMS dla
checkpointingu
• dynamiczne zarządzanie plikami
wyjściowymi i checkpointowymi
Zarządzanie zadaniami funkcje
• registerApplicationAccess – rejestrowanie
danych potrzebnych do checkpointowania zadania.
(GRMS_JOB_ID, Web Service)
• addOutputFileDirs, addCheckpointFileDirs –
dynamiczne rejestrowanie plików i katalogów
wyjściowych i checkpointowych
• getOutputFileDirs, getCheckpointFileDirs –
pobieranie listy plików wyjściowych i
checkpointowych danego zadania,
• deleteOutputFileDirs,
deleteCheckpointFileDirs – wyrejestrowywanie
plików
Pobieranie informacji o
zadaniach
• Pobieranie złożonych informacji o zadaniu
• getJobInfo – czas zlecenia, status, czas
zakończenia, opis stanu, długość historii i
ostatni wspis w historii),
• getJobHistory – tablica informacji
związanych z historią przetwarzania zadanie
(opis zadania, czas uruchomienia, czas
zlecenia i zakończenia itp.).
Znajdowanie zasobów
• GRMS zwraca listę zasobów
spełniających wymagania użytkownika
• wymagania specyfikowane są przy
użyciu tego samego języka co przy
uruchamianiu zadań
• findResources – zwraca listę zasobów
w formie JMC
Notyfikacja
• Jeśli klient (n.p. portal) lub serwis chcą
byś informowane przez GRMS’a n.p. o
zmianach stanu zadania to muszą
zaimplementować interfejs notyfikacji i
zarejestrować się w GRMS’ie
• registerNotification
• unregisterNotification
Funkcje pomocnicze
• testJobDescription – weryfikowanie
poprawności opisu zadania i/lub
wymagań zasobowych
GRMS Job Description (GJD)
• Zadania I ich wymagania zasobowe
definiowane są przy pomocy języka GJD.
• Opis ten jest dokumentem XML zgodnym ze
schemą GJD.
• Elementy dostępne w GJD
– job executable:
• lokalizacja pliku binarnego,
• argumenty wywołania,
• pliki które muszą być dotępne w katalogu roboczym
aplikacji,
• zmienne środowiskowe,
GRMS Job Description
(GJD)(c.d.)
•
•
•
•
standard input,
standard output,
standard error,
checkpoint definition,
– Wymagania zasobowe:
• nazwa hosta na którym zadanie ma być wykonane (jeśli
jest określona to GRMS nie wykorzystuje wew.
algorytmów rozdziału zasobów),
• system operacyjny,
• lokalny system kolejkowy(lsf, pbs, condor, itp.),
• minimalna pamięć,
GRMS Job Description
(GJD)(c.d.)
• minimalna liczba procesorów,
• minimalna prędkość procesorów,
• parametry sieciowe (bandwidth, latency and
capacity),
• i inne
• Pliki mogą być specyfikowane jako
URL’e gridFTP i GASS oraz
indentyfikatory systemu zarządzania
danymi (np. CDMS)
Krótki przegląd specyfikacji
GDJ
• <grmsjob> - główny element GJD,
zawiera atrybut "appid" który jest
identyfikatorem przypisywanym zadaniu
przez użytkownika. Element ten musi
zawierać jeden element <simplejob>
Specyfikacja GDJ c.d.
• <simplejob> - opisuje “simple job”, które
jest plikiem wykonywalnym i zbiorem
parametrów (executable parameters,
standard input, output and error streams,
environment variables etc.). Opcjonalnie
<simplejob> opisuje wymagania zasobowe
zadania. <simplejob> musi zawierać
element <executable> oraz opcjonalnie
jeden <resource>.
Specyfikacja GDJ c.d.
• <resource> opisuje wymagania zasobowe
zadania.
– Opis wymagań może opcjonalnie zawierać elementy
takie jak:
• <ostype> typ systemy operacyjnego,
• <osname> nazwa systemu operacyjneg,
• <hostname> nazwa host na którym ma zostać wykonane
zadanie,
• <localrmname> system kolejkowy ("fork" (domyślnie),
"lsf", "pbs", "sge", “condor”)
• <memory> minimalny rozmiar pamięci w MB,
• <cpucount> minimalna liczba procesorów,
• <cpuspeed> minimalna prędkość procesorów
• <bandwidth>, <latency>, <capacity> parametry
sieciowe
Specyfikacja GDJ c.d.
• Jeśli aplikacja nie została wcześnie
„zainstalowana” na wszystkich
dostępnych maszynach obliczeniowych
to wymagania zasobowe powinny
zawierać informacje o systemie
operacyjnym dla którego ją
skompilowano lub nazwę maszyny na
której powinna zostać wykonana.
Specyfikacja GDJ c.d.
• <executable> opis pliku wykonywalnego
aplikacji. Zawiera atrybuty “type” and “count”
attributes oraz musi posiadać jeden element
<file>. Opcjonalnie zawiera elementy
<arguments>, <environment>,
<checkpoint>, <stdin>, <stdout>, i
<stderr>.
– Atrybut “count” oznacza liczbę wykonań aplikacji.
– Atrybut “type” oznacza sposób w jaki jobmanager ma
uruchomić aplikację:
• single,
• multiple,
• mpi.
Przykłady opisu zadań
•
Najprostszy opis programu, który nie potrzebuje żadnych argumentów,
nie ma wymagań zasobowych, a użytkownik nie jest zainteresowany
otrzymaniem wyników programu:
<grmsjob appid="appid">
<simplejob>
<executable type="single" count="1">
<file name="exec-file" type="in">
<url>file:////bin/date</url>
</file>
</executable>
</simplejob>
</grmsjob>
• Zadanie identyczne z poprzednim z tym, że program ma być
wykonany na określonej przez użytkownika maszynie:
<grmsjob appid="appid">
<simplejob>
<resource>
<hostname> access.pcss.clusterix.pl</hostname>
</resource>
<executable type="single" count="1">
<file name="exec-file" type="in">
<url>file:////bin/date</url>
</file>
</executable>
</simplejob>
</grmsjob>
• Ponownie /bin/date z tym że wykonane na maszynie z systemem Linux
I co najmniej dwoma procesorami:
<grmsjob appid="appid">
<simplejob>
<resource>
<osname>Linux</osname>
<cpucount>2</cpucount>
</resource>
<executable type="single" count="1">
<file name="exec-file" type="in">
<url>file:////bin/date</url>
</file>
</executable>
</simplejob>
</grmsjob>
• Aby wykonanie zadania zostało poprzedzone pobraniem pliku
wykonywalnego z określonej lokalizacji należy użyć znacznika <url>
<grmsjob appid="appid">
<simplejob>
<executable type="single" count="1">
<file name="exec-file" type="in">
<url>gsiftp:// access.pcss.clusterix.pl/~/date</url>
</file>
</executable>
</simplejob>
</grmsjob>
• Argumenty wywołania programu przekazywane są w elementach
<value> zawartych w sekcji <arguments> section. GJD dla
“/bin/echo Hello World”:
<grmsjob appid="appid">
<simplejob>
<executable type="single" count="1">
<file name="exec-file" type="in">
<url>file:////bin/echo</url>
</file>
<arguments>
<value>Hello </value>
<value>World!</value>
</arguments>
</executable>
</simplejob>
</grmsjob>
•
Jeśli program potrzebuje określonych plików w swoim katalogu roboczym to należy to
opisać przy pomocy elementów <file> tylu “in”:
<grmsjob appid="appid">
<simplejob>
<executable type="single" count="1">
<file name="exec-file" type="in">
<url>file:////bin/cat</url>
</file>
<arguments>
<value>file.log</value>
<file name="file.log" type="in">
<url>gsiftp://access.pcss.clusterix.pl/~/examples/file.log</url>
</file>
</arguments>
</executable>
</simplejob>
</grmsjob>
•
Jeśli użytkownik chce pobrać pliki wygenerowane przez program to musi to opisać
w sekcji <arguments> przy pomocy elementów <file> typu “out”.
<grmsjob appid="appid">
<simplejob>
<executable type="single" count="1">
<file name="exec-file" type="in">
<url>file:////bin/tar</url>
</file>
<arguments>
<value>cfv</value>
<value>file.tar</value>
<value>report</value>
<file name="report" type="in">
<url>gsiftp:// access.pcss.clusterix.pl/~/examples/report</url>
</file>
<file name="report.tar" type="out">
<url>gsiftp:// access.pcss.clusterix.pl/~/examples/report.tar</url>
</file>
</arguments>
</executable>
</simplejob>
</grmsjob>
•
Jeśli program pobiera pewne dane ze stdin to należy to opisać przy pomocy znacznika
<stdin> tag.
<grmsjob appid="appid">
<simplejob>
<executable type="single" count="1">
<file name="exec-file" type="in">
<url>file:////bin/cat</url>
</file>
<stdin>
<url>gsiftp://access.pcss.clusterix.pl/~/examples/stdin_file</url>
</stdin>
</executable>
</simplejob>
</grmsjob>
Dostęp do GRMSa (klienty):
• interfejst web-service’owy
– (zaawansowane aplikacje)
• klient linii komend
• klient dla urządzeń mobilnych
• Portal
Klient linii komend
Klient linii komend w Javie (c.d.)
• grid-proxy-init
• grms-client <operation> <parameters>
–
–
–
–
–
–
grms-client submit <jobDescriptionFile>
grms-client migrate <jobId> [<jobDescriptionFile>]
grms-client suspend <jobId> [<jobDescriptionFile>]
grms-client resume <jobId> [<jobDescriptionFile>]
grms-client cancel <jobId>
grms-client list [QUEUED | PREPROCESSING | PENDING | RUNNING |
STOPPED | POSTPROCESSING | FINISHED | SUSPENDED | FAILED |
CANCELED]
– grms-client list_all QUEUED | PREPROCESSING | PENDING | RUNNING |
STOPPED | POSTPROCESSING | FINISHED | SUSPENDED | FAILED |
CANCELED
–
–
–
–
–
–
–
–
–
–
–
–
–
–
grms-client register <jobId> <service_location> <pid>
grms-client info <jobId>
grms-client history <jobId>
grms-client resources <resourceDescriptionFile>
grms-client test <resourceDescriptionFile>
grms-client add_listener <jobid> <client> [STATUS | REQUEST] [PROFILE |
SMS | MAIL] <listener> [user]
grms-client del_listener <jobid> <notificationId>
grms-client add_output <jobId> <name> <path> [PHYSICAL | LOGICAL]
[FILE | DIRECTORY]
grms-client get_output <jobId>
grms-client del_output <jobId> <name> <path> [PHYSICAL | LOGICAL]
[FILE | DIRECTORY]
grms-client add_output <jobId> <name> <path> [PHYSICAL | LOGICAL]
[FILE | DIRECTORY]
grms-client get_output <jobId>
grms-client del_output <jobId> <name> <path> [PHYSICAL | LOGICAL]
[FILE | DIRECTORY]
grms-client description [SHORT | FULL]
Portal
Klient mobilny
Zadania MPICH-G2
• Typ zadania = mpichg
<executable type=mpichg >
• Liczba procesów -> atrybut count
<executable ... Count=8>
• Wymagania zasobowe:
– W chwili obecnej specyfikować wprost
nazwy maszyn
– suma tailSize’ów = count
Dodatkowe informacje i
materiały
• http://www.clusterix.pl
• http://rage1.man.poznan.pl/clx/grms.ppt
• http://rage1.man.poznan.pl/clx/grms-client.pdf