= 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''' =|| `` || 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''' =|| `` `[]` || monitors status changes of tasks belonging to given job. The `interval` argument determines delay in seconds between next status checks. || ||='''monitor_task''' =|| `` `` `[]` || monitors status changes of allocations belonging to the given tasks. The `interval` argument determines delay in seconds between next status checks. || ||='''task_info''' =|| `` `` `[` `[]]` || displays information about the given task. If the `showDesc` is `false` the task description is not shown. If the `limit` argument is specified the history of the task is limited to given value. =|| ||='''register_task_notification''' =|| `` `` `` || registers task's notification consumer || ||='''list_task_notifications''' =|| `` `` || lists task's notifications || ||='''cancel_task''' =|| `` `` || cancels execution of the given task || ||='''commit_task''' =|| `` `` || commits the given task to be processed by the system || ||='''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]]