QCG Simple jest zbiorem prostych narzędzi wzorowanych na poleceniach systemów kolejkowych umożliwiających zlecanie i kontrolowanie zadań w infrastrukturze PL Grid.
Rozdział ten przedstawia dwa typowe scenariusze użycia usług i narzędzi QCG: zlecanie zadań i rezerwowanie zasobów.
Pełna lista poleceń wraz z omówieniem znajduje się w osobnym rozdziale: "Polecenia qcg-*".
Każde z zadań opisywane jest przy pomocy wykonywalnego pliku tekstowego zawierającego dyrektywy QCG.
Dyrektywy QCG mają charakter informacyjny dla systemu i dostarczają informacji jak przygotować środowisko wykonania dla danego zadania (pliki wejściowe/wyjściowe) oraz jakie są preferencje/wymagania zasobowe.
Najprostszym plikiem zadania jest plik zawierający tylko informacje jak uruchomić daną aplikację:
#!/bin/bash date
W większości przypadków zadanie wymaga przekazanie do systemu dodatkowych informacji dotyczących konfiguracji środowiska wykonawczego bądź wymagań zasobowych.
Przekazanie tych informacji polega na umieszczeniu w pliku odpowiednich dyrektyw. Dyrektywy zaczynają się od sekwencji "#QCG", po której następuje nazwa dyrektywy i opcjonalne parametry.
host - wybór klastra dla zadania. Lista zasobów infrastruktury PL-Grid dostępnych z usług QCG.
Format opisu zadań wraz z pełna listą dyrektyw QCG
#!/bin/bash #QCG host=zeus #QCG queue=plgrid #QCG walltime=PT5M #QCG output=${JOB_ID}.output #QCG error=${JOB_ID}.error #QCG stage-in-file=input.txt -> lower.txt cat lower.txt | tr "[:lower:]" "[:upper:]" > upper.txt echo "Liczba znakow: " `wc -m upper.txt` sleep 120 echo "Koniec: " `date` #QCG stage-out-file=upper.txt -> ${JOB_ID}.upper
Do zlecenia zadania do wykonania w infrastrukturze PL-Grid służy polecenie qcg-sub.
Poniższy przykład demonstruje zlecenie przykładowego opisu zadania przedstawionego powyżej.
Zadanie to zakłada istnienie w katalogu, z którego jest zlecane pliku tekstowego "input.txt".
echo "QosCosGrid - PLGrid" > input.txt
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-sub ./task.qcg https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 20 Days 23 Hours 51 Minutes 42 Seconds ./task.qcg 0 jobId = J1366118276402__1967
W przypadku poprawnego zlecenia zadania polecenie qcg-sub wyświetla unikalny identyfikator zadania.
Klient QCG umożliwia wyświetlenie zbiorczej informacji o zadaniach w systemie (polecenie qcg-list), lub szczegółowej informacji o poszczególnych zadaniach (polecenie qcg-info)
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-list https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 20 Days 23 Hours 50 Minutes 37 Seconds JOB IDENTIFIER NOTE SUBMISSION TIME START TIME FINISH TIME STATUS HOSTNAME FLAGS STATUS DESC J1366116999098__3947 16.04.13 14:56 PREPROCESSING zeus S P J1366117507381_sleep_* 16.04.13 15:05 16.04.13 15:05 16.04.13 15:08 POSTPROCESSING inula S UP J1366117620524__4937 16.04.13 15:07 PREPROCESSING zeus S P J1366117625734__7230 16.04.13 15:07 PREPROCESSING zeus S P J1366117632131__3040 16.04.13 15:07 PREPROCESSING zeus S P J1366117771897__7250 16.04.13 15:09 16.04.13 15:09 RUNNING reef S UP J1366117777175__2068 16.04.13 15:09 16.04.13 15:09 RUNNING reef S UP J1366117818062__1298 16.04.13 15:10 16.04.13 15:10 RUNNING reef S UP J1366118276402__1967 16.04.13 15:17 16.04.13 15:18 RUNNING reef S UP IMPORTANT: * - the string was truncated to the width of the column List of truncated job identifiers: J1366117507381_sleep_7540 Number of tasks: POSTPROCESSING : 1 PREPROCESSING : 4 RUNNING : 4 TOTAL: 9
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-info J1366118276402__1967 https://elder13.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl /home/plgrid/plgpiontek/reef/.qcg UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 23 Days 21 Hours 18 Minutes 24 Seconds J1366118276402__1967 : Note: UserDN: /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek TaskType: SINGLE SubmissionTime: Tue Apr 16 15:17:56 CEST 2013 FinishTime: ProxyLifetime: P23DT21H18M22S Status: RUNNING StatusDesc: StartTime: Tue Apr 16 15:17:57 CEST 2013 Purged: false Allocation: HostName: reef.man.poznan.pl ProcessesCount: 1 ProcessesGroupId: Status: RUNNING StatusDescription: SubmissionTime: Tue Apr 16 15:17:56 CEST 2013 FinishTime: LocalSubmissionTime: Tue Apr 16 15:17:58 CEST 2013 LocalStartTime: Tue Apr 16 15:18:08 CEST 2013 LocalFinishTime: Purged: false
Po zakończeniu zadania (stan FINISHED) w katalogu, z którego zlecano zadanie dostępne będą pliki: J1366118276402__1967.output J1366118276402__1967.upper
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > cat J1366118276402__1967.output Liczba znakow: 20 upper.txt Koniec: Tue Apr 16 15:20:05 CEST 2013
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > cat J1366118276402__1967.upper QOSCOSGRID - PLGRID [qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik >
Do anulowania wykonywania zadania służy polecenie qcg-cancel.
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-sub task.qcg https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 20 Days 23 Hours 3 Minutes 15 Seconds ./task.qcg 0 jobId = J1366118576954__0116
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-list https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 20 Days 23 Hours 1 Minutes 27 Seconds JOB IDENTIFIER NOTE SUBMISSION TIME START TIME FINISH TIME STATUS HOSTNAME FLAGS STATUS DESC J1366118576954__0116 16.04.13 15:22 16.04.13 15:23 RUNNING reef S UP Number of tasks: RUNNING : 1 TOTAL: 1
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-cancel J1366118576954__0116 https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 20 Days 23 Hours 0 Minutes 13 Seconds Job is being canceled
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-list -C 10m -s canceled -R https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl /home/plgrid/plgpiontek/reef/.qcg UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 23 Days 21 Hours 13 Minutes 19 Seconds JOB IDENTIFIER NOTE SUBMISSION TIME START TIME FINISH TIME STATUS HOSTNAME FLAGS STATUS DESC J1366118576954__0116 16.04.13 15:22 16.04.13 15:23 16.04.13 15:23 CANCELED reef S P Number of tasks: CANCELED : 1 TOTAL: 1
W przypadku zadań wymagających interakcji z użytkownikiem, bądź na etapie kompilacji lub testowania kodu często przydatne lub wręcz konieczne jest uruchomienie zadnia interaktywnego.
Do zlecenia zadnia interaktywnego służy polecenie qcg-sub z przełącznikiem "-I/–interactive".
Korzystając z polecenia qcg-sub można zlecić wykonanie dowolnej interaktywnej tekstowej aplikacji.
Szczególnie częstym i użytecznym przypadkiem jest interaktywne uruchomienie konsoli poleceń umożliwiające np. kompilację oprogramowani na klastrze, do którego nie ma dostępu poprzez SSH.
W opisie zadania dla interaktywnego uruchomienia konsoli poleceń wystarczy podać nazwę klastra, na którym ma się uruchomić konsola oraz podać ścieżkę do preferowanego interpretera poleceń (np. bash).
#QCG host=inula.man.poznan.pl /bin/bash
W opisie zadania interaktywnego możliwe jest podanie wymagań zasobowych (dyrektywy procs i nodes).
Opis zadania inula.qcg
#!/bin/bash #QCG host=inula #QCG procs=12 /bin/bash
Zlecenie zadnia interaktywnego i wyświetlenie listy węzłów z przydzielonymi slotami obliczeniowymi (12).
[qcg] /home/plgrid/plgpiontek/reef/INTERACTIVE > qcg-sub -I inula.qcg https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 20 Days 22 Hours 40 Minutes 57 Seconds inula.qcg 0 jobId = J1364246860791__3941 Press Ctrl-C to cancel the task Interactive session started. Use the 'exit' command to quit. plgpiontek@c011:/mnt/lustre/inula/qcg/plgpiontek/J1364246860791__3941_task_1364246861194_441$ cat $PBS_NODEFILE c011 c011 c011 c011 c011 c011 c011 c011 c011 c011 c024 c024 plgpiontek@c011:/mnt/lustre/inula/qcg/plgpiontek/J1364246860791__3941_task_1364246861194_441$ exit exit [qcg] /home/plgrid/plgpiontek/reef/INTERACTIVE >
Zlecając zadanie istnieje możliwość podania, że dla danego zadania mają zostać zarezerwowane zasoby. Rezerwacja taka skojarzona jest z konkretnym zadaniem i zostanie automatycznie usunięta wraz z jego zakończeniem. Użytkownik na etapie zlecania zadania może podać wymagania czasowe na wykonanie zadania a system przez mechanizm rezerwacji zasobów gwarantuje wykonanie zadania w określonym czasie i co najważniejsze znanym czasie.
#QCG host=inula #QCG walltime=PT10M #QCG use-reservation hostname
Zlecenie zadania:
[qcg] /home/plgrid/plgpiontek/reef/REZERWACJE > qcg-sub reserve.qcg https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 24 Days 18 Hours 14 Minutes 40 Seconds reserve.qcg 0 jobId = J1366378301765__6846
Dla zadania wykonywanego z rezerwacją zasobów informacja o czasie wykonania zadania (czasie rezerwacji zasobów) wyświetlana jest zarówno dla qcg-list jak i dla qcg-info.
[qcg] /home/plgrid/plgpiontek/reef/REZERWACJE > qcg-list https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 24 Days 18 Hours 14 Minutes 24 Seconds JOB IDENTIFIER NOTE SUBMISSION TIME START TIME FINISH TIME STATUS HOSTNAME FLAGS STATUS DESCRIPTION J1366378301765__6846 19.04.13 15:31 19.04.13 15:33R PENDING inula S UP
Kolumna START TIME zawiera informacje: 19.04.13 15:33R - Litera "R" na końcu oznacza, że czas uruchomieni zadania podawany jest na podstawie rezerwacji.
[qcg] /home/plgrid/plgpiontek/reef/REZERWACJE > qcg-info J1366378301765__6846 https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 24 Days 18 Hours 14 Minutes 9 Seconds J1366378301765__6846 : Note: UserDN: /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek TaskType: SINGLE SubmissionTime: Fri Apr 19 15:31:41 CEST 2013 FinishTime: ProxyLifetime: P24DT18H14M7S Status: PENDING StatusDesc: ReservedTimeSlot: Fri Apr 19 15:33:00 CEST 2013 - Fri Apr 19 15:44:00 CEST 2013 StartTime: Fri Apr 19 15:31:47 CEST 2013 Purged: false Allocation: HostName: inula.man.poznan.pl ProcessesCount: 1 ProcessesGroupId: Status: PENDING StatusDescription: SubmissionTime: Fri Apr 19 15:31:47 CEST 2013 FinishTime: LocalSubmissionTime: Fri Apr 19 15:31:51 CEST 2013 LocalStartTime: LocalFinishTime: Purged: false
Informacja o czasie rezerwacji dla zadania jest w polu: ReservedTimeSlot: Fri Apr 19 15:33:00 CEST 2013 - Fri Apr 19 15:44:00 CEST 2013
Drugim sposobem wykorzystania rezerwacji jest zlecenie zadania z wykorzystaniem wcześniej zarezerwowanych zasobów. Możliwe jest zlecenie wielu zadań do tej samej rezerwacji. QCG pozwala zlecać zadania do lokalnych rezerwacji utworzonych bezpośrednio w systemie kolejkowym jak i rezerwacji utworzonych z wykorzystaniem polecenia qcg-reserve.
W celu uruchomienia zadania w rezerwacji należy podać w opisie zadania dyrektywę reservation.
#QCG host=inula #QCG walltime=PT5M #QCG procs=12 #QCG reservation=plgpiontek.0 local ...
W przypadku korzystania z rezerwacji lokalnych konieczne jest podanie słowa "local" po identyfikatorze rezerwacji.
#QCG host=inula #QCG walltime=PT5M #QCG procs=12 #QCG reservation=R1366379186504__5256
W przypadku korzystania z wcześniej utworzonych rezerwacji konieczne jest dostosowanie rozmiaru zadania (ilości wymaganych slotów) i czasu zadania do parametrów rezerwacji.
Do opisu wymagań dotyczących zasobów do rezerwacji stosuje się ten sam format co do opisu zadań - QCG-Simple.
Dyrektywy wykorzystywane przy rezerwacji zasobów:
host - wybór klastra dla zadania. Lista zasobów infrastruktury PL-Grid dostępnych z usług QCG.
Format opisu zadań wraz z pełna listą dyrektyw QCG
Przykładowy opis rezerwacji 10 slotów obliczeniowych na klastrze inula na czas 1 godziny.
#QCG host=inula #QCG walltime=PT1H #QCG procs=10
Do rezerwowania zasobów służy polecenie qcg-reserve.
Każda rezerwacja w systemie identyfikowana jest poprzez unikalny identyfikator zwracany przez polecenie qcg-reserve.
[qcg] /home/plgrid/plgpiontek/reef/REZERWACJE > qcg-reserve reserve.qcg https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 24 Days 12 Hours 42 Minutes 13 Seconds reserve.qcg : reservationId = R1366398248299__4039
Informacje o rezerwacjach wyświetlają polecenia qcg-rlist i qcg-rinfo.
[qcg] /home/plgrid/plgpiontek/reef/REZERWACJE > qcg-rlist https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 24 Days 12 Hours 41 Minutes 53 Seconds RESERVATION IDENTIFIER SUBMISSION TIME START TIME FINISH TIME SLOTS HOSTNAME STATUS R1366398248299__4039 19.04.13 21:04 19.04.13 21:05 19.04.13 22:06 10 inula.man.poznan.pl:10 RESERVED
[qcg] /home/plgrid/plgpiontek/reef/REZERWACJE > qcg-rinfo R1366398248299__4039 https://qcg-broker.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 24 Days 12 Hours 41 Minutes 33 Seconds UserDN: /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek SubmissionTime: Fri Apr 19 21:04:08 CEST 2013 DescriptionType: QCG_SIMPLE StartTime: Fri Apr 19 21:05:00 CEST 2013 EndTime: Fri Apr 19 22:06:00 CEST 2013 Status: RESERVED TotalSlotsCount: 10 InUse: false HostName: inula.man.poznan.pl ProcessesGroupId: qcg SlotsCount: 10 LocalReservationId: plgpiontek.0 Node: c026 SlotsCount: 10
Do anulowania rezerwacji służy polecenie qcg-rcancel.
[qcg] /home/plgrid/plgpiontek/reef/REZERWACJE > qcg-rcancel R1366398248299__4039 https://elder13.man.poznan.pl:8443/qcg/services/ /C=PL/O=GRID/O=PSNC/CN=qcg-broker/qcg-broker.man.poznan.pl UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek ProxyLifetime = 24 Days 12 Hours 41 Minutes 10 Seconds R1366398248299__4039 : Reservation is being canceled