= QCG-Klient dla infrastruktury PL-Grid = [[PageOutline]] [[QCG_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 @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 [[http://node2.qoscosgrid.man.poznan.pl/~piontek/qcg-broker/QCGJobDescriptionSchema.xsd| 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''' =|| `` `[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''' =|| `[]` `[]` || 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''' =|| `` `[]` `[]` || Wyślietla listę eksperymentów należącą do podanego `użytkownika`. Poledenie to ma charakter administracyjny i wymaga określonych uprawnień || ||='''test_description''' =|| `` `[QCG lub JSDL]` || Waliduje opis eksperymentu obliczeniowego || ||='''translate_description''' =|| `` JSDL || Tłumaczy opis zadania z formatu JSDL do formatu QCG || ||='''job_info''' =|| `` `[]` || Wyświetla pełną informację o podanym eksperymencie obliczeniowym. Jeżeli `pokażOpis` ma wartość `true` opis eksperymentu jest wyświetlany. || ||='''cancel_job''' =|| `` || Anuluje lub przerywa wykonywanie eksperymentu obliczeniowego. || ||='''commit_job''' =|| `` || Zatwierdza do wykonania eksperyment zlecony z opcja ''commitWait=true''. Mechanizm ten umożliwia zarejestrowanie notyfikacji zanim rozpocznie sie przetwarzanie eksperymentu. || ||='''list_tasks''' =|| `` `[]` || 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''' =|| `` `[]` || 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''' || `` `` || Rejestruje odbiorcę powiadomień dla danego eksperymentu. || ||='''list_job_notifications''' =|| `` || Wyświetla liste zarejestrowanych powiadomień dla danego eksperymentu || ||='''register_tasks_notification''' =|| `` `` || Rejestruje odbiorcę powiadomień dla wszystkich zadań danego eksperymentu. || ||='''monitor_job''' =|| `` `[]` || 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''' =|| `` `` `[]` || 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''' =|| `` `` `[` `[]]` || 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''' =|| `` `` `` || Rejestruje odbiorcę powiadomień dla danego zadania. || ||='''list_task_notifications''' =|| `` `` || lists task's notifications || ||='''cancel_task''' =|| `` `` || Anuluje lub przerywa wykonywanie danego zadania. || ||='''commit_task''' =|| `` `` || Zatwierdza do wykonania zadanie zlecone z opcja ''commitWait=true''. Mechanizm ten umożliwia zarejestrowanie notyfikacji zanim rozpocznie sie przetważanie zadania. || ||='''reserve_resources''' =|| `[]` `` (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''' =|| `` || Zwraca informację dotyczącą danej rezerwacji: listę zarezerwowanych zasobów, lokalnych identyfikatorów rezerwacji, czas rezerwacji. Funkcjonalność nie jest jeszcze dostępna! || ||='''cancel_reservation''' =|| `` || 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 == [[qcg_usage_examples | Przykłady użycia klienta QCG]]