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