QCG-Klient dla infrastruktury PL-Grid

Infrastruktura QoSCosGrid wraz z opisem wymagań i procedur dla projektu PL-Grid.

Dostęp do infrastruktury QCG

Dostęp do infrastruktury QCG możliwy jest z dowolnego komputera na którym zainstalowany jest klient QCG-Broker. Dla wygody użytkowników uruchomiona została maszyna dostępowa (qcg.man.poznan.pl) z zainstalowaną wersją klienta dla użytkowników PL-GRID.

Logowanie: ssh <plguser>@qcg.man.poznan.pl

np.

ssh plgpiontek@qcg.man.poznan.pl

Przy logowaniu należy podać hasło ustawione w portalu PL-GRID.

Po zalogowaniu przed pierwszym użyciem klienta konieczna jest konfiguracja środowiska użytkownika zgodnie z wytycznymi opisanymi na maszynie dostępowej.

Opis zadania - QCG-JobProfile

Każdy eksperyment obliczniowy zlecany do wykonania na ingrastrukturze QosCosGrid musi być opisany przez dokument w formacie XML zwany pózniej "opisem zadania". Infrastruktura QCG akceptuje opisy zadań wyrazone w:

  • języku QCG-JobProfile zdefiniowanym formalnie przez   schemat XML - QCG-JobProfile.
  • w języku JSLD (Job Submission Description Language) z rozszerzeniem HPC Basic Profile.

Przykłady opisów zadań w formacie QCG-JobProfile dostępne są na maszynie dostępowej - qcg.man.poznan.pl.

Użycie klienta

Klient QCG może być uruchomiony w twóch trybach:

  • tryb poleceń – Każde odwołanie do isfrastruktury QCG jest pojedynczym wywołaniem klienta, a argumety tego wywoałania są przekazywane bezpośrednio z lini poleceń. Tryb poleceń wykorzystywany jest głównie przy wywoływaniu klienta z wszelkiego rodzaji skryptów, szczególnie wtedy, gdy przetwarzanie odpowiedzi systemu służy sterowaniu przebiegiem eksperymentu,
  • tryb konsoli – tryb ten działa podobnie do kosoli poleceń systemu operacyjnego Linux/Unix. Wprowadzane przez użytkownika linie tekstu są interpretowane przez klienta.Tryb konsoli daje dodatkową funkcjonalnoćś niedostępną w trybie poleceń taka jak: aliasy, historię poleceń dostępna poprzez klawisze strzałek, zarządzanie proxy użytkownika, uzupełnianie poleceń i ścieżek plików.

Schemat użycia klient zależy od wybranego trybu:

  • dla trybu poleceń: "qcg-client OPRATION [ARG1 .. ARGn]"
  • dla trybu konsoli: "qcg-client -console" poczym użytkownik podaje linie tekstu w formacie "OPERATION [ARG1 .. ARGn]" do przetworzenia i wykonania na infrastrukturze QCG.

WAŻNE: Do uwierzytelnienia i delegacji uprawnień użytkownika klient wymaga poprawnej konfiguracji i dostępu do certyfikatu proxy użytkownika.

Polecenia

Niezależnie od tryby klient infrastruktury QCG wspiera następujące polecenia:

Polecenie Argumenty Opis
submit_job <plik_z_opisem> [QCG lub JSDL] Zleca eksperyment obliczeniowy do wykonania na infrastrukturze QCG. Opis zadania może być wyrażony albo przy pomocy domyślnego języka QCG, albo przy użyciu języka JSDL (Job Submission Description Language) z rozszerzeniem HPC Basic Profile. W przypadku opisu w języku JSDL format opisu (JSDL musi być jawnie podany jako parametr wywołania. Jeżeli opis jest skladniowo i logicznie poprawny zwracany jest globalnie unikalny identyfikator zadania. QCG definiuje eksperymenty obliczeniowe (ang. job) jako zbiór zadań (ang. task) z zależnościami kolejnościowymi (ang. workflow). QCG wspiera zarówno proste zadnia jak również zadania parametryczne (ang. parameter sweep) czy zadania rozproszone (w tym zadania hybrydowe MPI/OpenMP). Dla każdego zadania możliwe jest zdefiniowanie wymaganej przez nie jakości usług (ang. Quality of Service) dotyczącej zarówno charakterystyki zasobów jak i czasu wykonania.
list_jobs [<limit>] [<status>] Wyświetla listę eksperymentów obliczeniowych należących do danego użytkownika. Możliwe jest ograniczenie listy do zadanej liczby ostatnich eksperymentów i/lub eksperymentów o określonym statusie. Lista wszystkich możliwych statusów z ich znaczeniami zebrana została pod poniższą tabelą.
list_user_jobs <użytkownik> [<limit>] [<status>] Wyślietla listę eksperymentów należącą do podanego użytkownika. Poledenie to ma charakter administracyjny i wymaga określonych uprawnień
test_description <plik_z_opisem> [QCG lub JSDL] Waliduje opis eksperymentu obliczeniowego
translate_description <plik_z_opisem> JSDL Tłumaczy opis zadania z formatu JSDL do formatu QCG
job_info <jobId> [<pokażOpis>] Wyświetla pełną informację o podanym eksperymencie obliczeniowym. Jeżeli pokażOpis ma wartość true opis eksperymentu jest wyświetlany.
cancel_job <jobId> Anuluje lub przerywa wykonywanie eksperymentu obliczeniowego.
commit_job <jobId> Zatwierdza do wykonania eksperyment zlecony z opcja commitWait=true. Mechanizm ten umożliwia zarejestrowanie notyfikacji zanim rozpocznie sie przetwarzanie eksperymentu.
list_tasks <jobId> [<status>] Wyświetla liste zadań wchodzących w skład eksperymentu. Opcjonalnie możliwe jest ograniczenie listy do zadań o konkretnym statusie. Lista wszystkich możliwych statusów z ich znaczeniami zebrana została pod poniższą tabelą.
tasks_statuses <jobId> [<podsumowanie>] Wyświetla listę zadań należacych do danego eksperymentu wraz z ich statusami. Jeżeli argument podsumowanie ma wartość true dodatkowa statystyka jest wyświetlana.
register_job_notification <jobId> <url> Rejestruje odbiorcę powiadomień dla danego eksperymentu.
list_job_notifications <jobId> Wyświetla liste zarejestrowanych powiadomień dla danego eksperymentu
register_tasks_notification <jobId> <url> Rejestruje odbiorcę powiadomień dla wszystkich zadań danego eksperymentu.
monitor_job <jobId> [<odstęp>] Monitoruje zmiany statusów zadań należących do danego eksperymentu. Argument odstęp określa odstęp w sekundach pomiędzy kolejnymi sprawdzeniami.
monitor_task <jobId> <taskId> [<odstęp>] Monitoruje zmiany statusów alokacji należących do danego zadania. Argument odstęp określa odstęp w sekundach pomiędzy kolejnymi sprawdzeniami.
task_info <jobId> <taskId> [<pokażOpis> [<limit>]] Wyświetla informację o danym zadaniu. Jeżeli argument pokażOpis ma wartość true to opis zadania jest wyświetlany. Jeżeli argument limit jest podany to długość historii zadania (informacja o kolejnych migracjach) jest ograniczona do zadanej wartości.
register_task_notification <jobId> <taskId> <url> Rejestruje odbiorcę powiadomień dla danego zadania.
list_task_notifications <jobId> <taskId> lists task's notifications
cancel_task <jobId> <taskId> Anuluje lub przerywa wykonywanie danego zadania.
commit_task <jobId> <taskId> Zatwierdza do wykonania zadanie zlecone z opcja commitWait=true. Mechanizm ten umożliwia zarejestrowanie notyfikacji zanim rozpocznie sie przetważanie zadania.
reserve_resources [<taskId>] <job_desc> (QCG or JSDL) Rezerwuje zasoby spełniające wymagania całego eksperymentu lub pojedynczego zadania. Wyświetlany jest identyfikator rezerwacji. Funkcjonalność nie jest jeszcze dostępna!
reservation_info <reservationId> Zwraca informację dotyczącą danej rezerwacji: listę zarezerwowanych zasobów, lokalnych identyfikatorów rezerwacji, czas rezerwacji. Funkcjonalność nie jest jeszcze dostępna!
cancel_reservation <reservationId> Zwalnia zarezerwowane zasoby. Funkcjonalność nie jest jeszcze dostępna!

Lista statusów

Statusy eksperymentów

  • UNCOMMITTED - eksperyment został zlecony z flagą commitWait i oczekuje na zatwierdzenie,
  • SUBMITTED – eksperyment został zlecony i jest przetwarzany,
  • SUSPENDED – przetwarzanie eksperymentu zostało wstrzymane,
  • ACTIVE – eksperyment jest "aktywny", przynajmniej jedno zadanie jest przetwarzane,
  • FINISHED – eksperyment jest zakończony,
  • FAILED – eksperyment sie nie powiódł. Przynajmniej jedno "kluczowe" zadanie zakończyło się błędem.
  • CANCELED – eksperyment został anulowany,
  • BROKEN - jedno lub więcej "kluczowych" zadań zakończyło się błędem. System czeka na zakończenie uruchomionych zadań, poczym status eksperymentu zostanie zmieniony na FAILED.|

Statusy zadań

  • UNSUBMITTED – przetważanie zadania wstrzymane z powodu zależności kolejnościowych,
  • UNCOMMITED - zadanie oczekuje na zatwierdzenie do przetwarzania,
  • QUEUED – zadanie oczekuje w kolejce na przetwarzanie,
  • PREPROCESSING – system przygotowuje środowisko uruchomieniowe dla zadania,
  • PENDING – aplikacja w ramach danego zadania oczekuje na wykonanie w systemie kolejkowym,
  • RUNNING – aplikacja użytkownika jest wykonywana w ramch zadania,
  • STOPPED – aplikacja została zakończona, system nie rozpoczął jeszcze czynności związanych z kopiowaniem wyników i czyszczeniem środowiska wykonawczego,
  • POSTPROCESSING – system wykonuje akcje mające na calu zakończenie zadania: kopije pliky wynikowe, czyści środowisko wykonawcze, etc.,
  • FINISHED – zadanie zostało zakończone,
  • SUSPENDED – przetwarzanie zadania zostało wstrzymane,
  • FAILED – błąd przetwarzania zadania,
  • CANCELED – zadanie anulowane przez użytkownika.

Przykłady użycia

Przykłady użycia klienta QCG