Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

test

276 views

Published on

test

Published in: Business, Technology
  • Be the first to comment

  • Be the first to like this

test

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

×