Uruchamianie zadań w systemie CLUSTERIX z poziomu
Transkrypt
Uruchamianie zadań w systemie CLUSTERIX z poziomu
Uruchamianie zadań w systemie CLUSTERIX z poziomu środowiska programistycznego Eclipse Marcin Woźniak1 1 Wydział Inżynierii Mechanicznej i Informatyki Kierunek Informatyka, Rok V [email protected] Streszczenie W chwili obecnej nie ma narz˛edzi wspierajacych ˛ proces tworzenia aplikacji gridowych dla środowiska CLUSTERIX. W pracy przedstawiono plugin dla środowiska programowania Eclipse, wypełniajacy ˛ t˛e luk˛e poprzez udost˛epnienie możliwości zlecania zadań, nadzorowania ich wykonywania oraz pobierania wyników. W środowisku CLUSTERIX do zlecania zadań wykorzystywany jest system GRMS, który jest systemem szeregowania zadań, dla dużych, rozproszonych systemów obliczeniowych. Praktyczne zastosowanie omawianego pluginu wykracza poza projekt CLUSTERIX ze wzgl˛edu na wykorzystanie systemu GRMS również w innych projektach gridowych. 1 Wst˛ep CLUSTERIX (National CLUSTER of LInuX Systems) to rozproszony klaster PC nowej generacji. Celem jego realizacji było opracowanie narz˛edzi oraz mechanizmów umożliwiajacych ˛ wdrożenie produkcyjnego środowiska gridowego [1]. Projekt ten łaczy ˛ lokalne klastry polskich centrów naukowych za pośrednictwem sieci Pionier, tworzac ˛ system obliczeniowy o dużej mocy. W środowisku CLUSTERIX do zarzadzania ˛ zadaniami wykorzystywany jest system GRMS. W celu wykonania programu na takim systemie należy do programu utworzyć plik opisu zadania w formacie GJD (GRMS Job Description) opartym o XML. Przykład najprostszej postaci pliku GJD: <grmsjob appid="appid"> <simplejob> <executable type="single" count="1"> <file name="exec-file" type="in"> <url>file:////bin/date</url> </file> </executable> </simplejob> </grmsjob> 1 Plik GJD składa si˛e z dwóch cz˛eści. Cz˛eść pierwsza - <resource> określa środowisko w jakim zadania ma zostać wykonane. Opisuje wymagania zasobowe aplikacji. Cz˛eść druga <executable> opisuje plik wykonywalny aplikacji [3]. Z wykorzystaniem prezentowanego pluginu utworzenie pliku opisu zadania ogranicza si˛e zaledwie do wypełnienia kilku pól. Użytkownik nie musi si˛e zastanawiać nad poprawnościa˛ składni pliku XMLowego. Pozwala to na unikni˛ecie wielu bł˛edów wynikajacych ˛ ze złożoności tego pliku. Plik wynikowy generowany jest na podstawie pól interfejsu, a jego podglad ˛ znajduje si˛e na ostatniej zakładce edytora. Samo zlecanie zadania również ogranicza si˛e do paru prostych czynności. Po wypełnieniu pól dotyczacych ˛ połaczenia, ˛ znajdujacych ˛ si˛e na pierwszej zakładce edytora użytkownik może już zlecić zadanie wybierajac ˛ opcje z menu kontekstowego. Pakowanie, kopiowanie, rozpakowywanie projektu, oraz jego kompilacja i zlecenie wykonuja˛ si˛e już automatycznie. 2 System szeregowania zadań GRMS GRMS (Grid Resource Management System) jest systemem zarzadzania ˛ zasobami i zadaniami w projekcie CLUSTERIX. Utworzony został w ramach projektu GridLab. Jego głównym zadaniem jest zarzadzanie ˛ całym procesem zdalnego zlecania zadań obliczeniowych do różnych systemów kolejkowych obsługujacych ˛ klastry lokalne. GRMS został zaprojektowany jako zbiór niezależnych komponentów zajmujacych ˛ si˛e różnymi aspektami procesu zarzadzania ˛ zasobami, wykorzystujacych ˛ serwisy niskiego poziomu[1]. GRMS jest systemem szeregowania zadań, dla dużych, rozproszonych systemów obliczeniowych (np GRIDów). Jego celem jest zarzadzanie ˛ całym procesem obsługi zadań, umożliwiajac ˛ jednocześnie zachowanie przez właścicieli zadań pełnej kontroli nad zasobami wykonujacymi ˛ obliczenia[2]. Funkcjonalność systemu GRMS obejmuje: • uruchamianie zadań użytkownika, • listowanie zadań użytkownika wg. określonych kryteriów, • zarzadzanie ˛ zadaniami, • pobieranie informacji o zadaniach, • wyszukiwanie zasobów spełniajacych ˛ wymagania użytkownika, • notyfikacja (powiadamianie), • funkcje pomocnicze. Aby udost˛epnić dost˛ep do systemu GRMS stworzone zostały różne narz˛edzia. Użytkownik ma tutaj do wyboru: • interfejs web-service’owy, • klient linii komend, • klient dla urzadzeń ˛ mobilnych, • Portal. 2 3 Edytor GRMS Job Description dla Eclipse Rys. 1: Edytor GRMSJobDescription Edytor składa si˛e z czterech cz˛eści (zakładek): 1. Main settings, 2. Executable, 3. Resource, 4. File preview. Pierwsza zakładka odpowiada za opcje zwiazane ˛ ze zlecaniem zadania. Tu użytkownik podaje nazw˛e hosta z którym należy si˛e połaczyć, ˛ nazw˛e użytkownika, ścieżk˛e do pliku z kluczem ssh (id_rsh) oraz hasło uwierzytelniajace ˛ (Passphrase) i katalog docelowy, gdzie ma zostać skopiowany projekt. Tu również ustawiane jest pole appid (Application Id) czyli nazwa zadania. Zakładka druga odpowiada cz˛eść EXECUTABLE opisu zadania. Tu ustawiane sa˛ opcje zwiazane ˛ z plikiem wykonywalnym: • lokalizacja pliku binarnego, • argumenty wywołania, • pliki we/wy, 3 • zmienne środowiskowe, • stdin, stdout, stderr, • opcje dotyczace ˛ checkpoitowania. Zakładka trzecia to cz˛eść RESOURCE opisu zadania. Ustawiane sa˛ tu wymagania zasobowe, które obejmuja˛ mi˛edzy innymi: • nazw˛e hosta na którym zadanie ma zostać wykonane, • system operacyjny, • lokalny system kolejkowy, • minimalna˛ ilość pami˛eci, • minimalna˛ liczb˛e procesorów, • minimalna˛ pr˛edkość procesorów. Zakładka czwarta to podglad ˛ wynikowego pliku opisu zadania GJD. 4 Zlecanie zadań do systemu GRMS Rys. 2: Komunikacja z systemem GRMS Zlecanie zadań w przypadku omawianego systemu można podzielić na dwie cz˛eści. Pierwsza cz˛eść obejmuje czynności wst˛epne polegajace ˛ na logowaniu do w˛ezła dost˛epowego oraz skopiowaniu tam pliku opisu zadania wraz z wymaganymi do jego kompilacji i uruchomienia plikami. Użytkownik musi mieć konto na w˛eźle dost˛epowym oraz prawa do uruchamiania zadań. Druga cz˛eść to rzeczywiste zlecenie zadania z w˛ezła dost˛epowego do systemu GRMS. 4 Do komunikacji z systemem GRMS wykorzystywane jest połaczenie ˛ SSH. Aby umożliwić łaczenie ˛ ssh z poziomu Eclipse wykorzystywana jest tutaj biblioteka Ganymed SSH2 for Java[5]. W momencie zlecania zadania projekt jest pakowany i wysyłany na konto użytkownika na gridzie. Tam musi zostać rozpakowany i skompilowany. Dopiero w tym momencie może nastapić ˛ rzeczywiste zlecenie zadania do systemu GRMS. Obecnie zadanie jest zlecane za pośrednictwem aplikacji grms-client (klienta grms dost˛epnego z linii poleceń): grms-client submit ~/sciezka/do/pliku/opisu/zadania.xml W przyszłości jednak omawiany plugin zostanie rozszerzony o własna˛ implementacj˛e funkcji zwiazanych ˛ z obsługa˛ zadań GRMS. 5 Przykład Rozważmy przykładowe zadanie (bardzo proste) uruchamiajace ˛ na maszynie access.pcz.clusterix.pl program “/bin/date”. W celu zlecenia go tworzymy plik opisu zadania wykorzystujac ˛ omawiany edytor, gdzie ustawiamy konieczne pola: • <appid=“przykład”> - Application ID, • <hostname> - nazwa maszyny na której zadanie ma być wykonane, • <localrmname> - wymagany typ systemu kolejkowego na zasobie, • <executable type=“single” count=“1” > - sposób uruchomienia aplikacji i ilość uruchomień, • <file name=“data”type=“in”> - nazwa pliku wykonywalnego (atrybut type w tym przypadku nie ma znaczenia), • <url> - ścieżka do pliku wykonywalnego. Rys. 3: Przykładowy plik opisu zadania 5 Pola appid, executable oraz file sa˛ polami ustawianymi zawsze. Sa˛ one konieczne do wykonania dowolnego zadania. Pozostała cz˛eść GJD jest opcjonalna i ustawiana w zależności od konkretnego zadania, lub wymagań użytkownika wobec maszyny, systemu badź ˛ sposobu wykonania zadania. W powyższym przykładzie ustawiono również pola hostname, oraz localrmname, wymuszajac ˛ uruchomienia zadania na maszynie “access.pcz.clusterix.pl”, oraz wykorzystanie systemu kolejkowego “pbs”. Oprócz zdefiniowania opisu zadania należy również zdefiniować parametry połacze˛ nia. Znajduja˛ si˛e one na pierwszej zakładce edytora. Należy tu ustawić nazw˛e użytkownika, nazw˛e maszyny, plik z kluczem, passphrase i katalog docelowy dla projektu. Rys. 4: Ustawienia połaczenia ˛ Po ustawieniu powyższych opcji możemy już zlecić zadanie wybierajac ˛ przycisk “Submit Job” lub wybierajac ˛ opcje z menu kontekstowego. Zadanie zostanie wysłane i zlecone do wykonania. Rys. 5: Wynik “Submit Job” W chwili zlecenia zadania na poczatku ˛ testowany jest plik GJD i w przypadku ewentualnych bł˛edów system sugeruje jak je poprawić. Jako wynik pomyślnie przyj˛etego zlecenia system zwraca dane użytkownika który zleca zadanie, oraz identyfikator JobId. Iden- 6 tyfikator ten w przypadku dalszych działań na zleconym zadaniu (checkpoitowanie, anulowanie) b˛edzie podawany jako parametr określajacy ˛ konkretne zadanie użytkownika. Przycisk “Job Info” służy do pobrania informacji o zleconym zadaniu, o identyfikatorze JobId. grms-client info 122345_jobId_6789 Rys. 6: Wynik “Job Info” Wynikiem funkcji JobInfo sa˛ ogólne informacje o zadaniu, mi˛edzy innymi: DN użytkownika, moment zlecenia, aktualny stan zadania (PREPROCESSING, RUNNING, FINISHED, CANCELED, STOPPED), czas zakończenia (jeśli zadanie zostało juz ukończone) oraz zawartość pliku GJD zadania[3]. Tutaj również należy szukać przyczyn w przypadku niepowodzenia wykonania zadania (jobStatu=FAILED). System informuje o ewentualnym bł˛edzie zwracajac ˛ opis bł˛edu (errorDescription). 6 Podsumowanie Głównym celem prezentowanego pluginu jest stworzenie narz˛edzia dla programisty ułatwiajacego ˛ prac˛e w systemie CLUSTERIX. Ma on zapewnić łatwy dost˛ep do zasobów 7 CLUSTERIXA. Poza samym zlecaniem zadań i nadzorowaniem ich wykonania omawiany plugin ma również pozwolić użytkownikowi na pełne wykorzystanie innych funkcji systemu GRMS, jak np. zatrzymywanie zadań, pobieranie wyników, migracja zadań (przenoszenie na inna˛ maszyn˛e). Ponadto w przyszłości może on zostać poszerzony o wsparcie do budowy oprogramowania przeznaczonego na środowiska gridowe z systemem GRMS. Niedawno ukazało si˛e również inne narz˛edzie umożliwiajace ˛ współprac˛e z systemami gridowymi. Mowa tu o projekcie G-Eclipse, który poza budowa˛ oprogramowania i możliwościa˛ uruchamiania go na systemach gridowych udost˛epnia także wiele innych funkcji jak np. wizualizacja wyników obliczeń. G-Eclipse ma łaczyć ˛ funkcjonalność takich narz˛edzi jak Migrating Desktop, the GridBench suite, the Grid Visualisation Kernel (GVK)[4]. Jednak ze wzgl˛edu na brak wsparcia dla systemu GRMS nie b˛edzie można zkożystać z niego w środowisku CLUSTERIX. Literatura [1] Roman Wyrzykowski, Norbert Meyer, Maciej Stroinski CLUSTERIX: Koncepcja budowy rozproszonego klastra PC nowej generacji; PIONIER 2003, Poznań, ss. 133146. [2] Bogdan Ludwiczak, GRMS System Zarzadzania ˛ Zadaniami. Interfejs użytkownika systemu GRMS Wprowadzenie; http://clusterix.pcz.pl/projekt/publikacje/wroclaw2006/GRMS.pdf. [3] Krzysztof Kurowski, Bogdan Ludwiczak, Ariel Oleksiak, Tomasz Piontek, Juliusz Pukacki GRMS wersja 1.9.7 - Instrukcja użytkownika; 2005 Poznańskie Centrum Superkomputerowo Sieciowe. [4] g-Eclipse - Access the power of the Grid; http://www.geclipse.eu/. [5] Ganymed SSH-2 for Java; http://www.ganymed.ethz.ch/ssh2/. 8