= 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ść `false` opis eksperymentu nie 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 przetważanie 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ść `false` to opis zadania nie 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) || reserve resources that meet either the wole job or given task requirements. The reservation identifier is returned. This functionality is not implemented yet! || ||='''reservation_info''' =|| `` || return complex information concerning the given reservation: list of reserved resources, local identifiers of reservations, reservation time slot. This functionality id not implemented yet! || ||='''cancel_reservation''' =|| `` || releases reserved resources. This functionality is not implemented yet! || List of Job statuses: * UNCOMMITTED - the job was submitted with two phase commit option and waits to be committed, * SUBMITTED – the job was submitted to the system and is executed by the system, * SUSPENDED – the job was suspended, * ACTIVE – the job is active, at least one task is processed, * FINISHED – the job was completed, * FAILED – the job (at least one crucial task belonging to the job) failed * CANCELED – the job was canceled by the user, * BROKEN - one or more of crucial tasks failed, system waits until active tasks will finish and change the status of the job to FAILED.| List of Task statuses: * UNSUBMITTED – the task cannot be started because of dependencies, * UNCOMMITED - the task waits to be committed, * QUEUED – the task was put into the queue and waits for execution, * PREPROCESSING – system makes some actions needed to start the task (looks for the resource, stages in files), * PENDING – the task is pending in the queueing-system, * RUNNING – the task is active, * STOPPED – the task was finished or was checkpointed, but system did not start staging out files, * POSTPROCESSING – system makes some actions needed to complete the task, for example stages out files, cleares working environment, etc., * FINISHED – the task was completed, * SUSPENDED – the task was suspended, * FAILED – the task failed, * CANCELED – the task was canceled by the user. == Usage examples == [[qcg_usage_examples | Przykłady użycia klienta QCG]]