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-*".

Opis zadania

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.

 

Zlecanie i kontrolowanie zadania

Najczęsciej wykorzystywane dyrektywy

Format opisu zadań wraz z pełna listą dyrektyw QCG

Przykład opisu zadnia

#!/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

Zlecenie zadania

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.

Informacja o zadaniach

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 > 

 

Anulowanie zadania

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

 

Zlecenie zadnia interaktywnego

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 >

 

Zlecanie zadania z wykorzystaniem rezerwacji

Rezerwowanie zasobów dla konkretnego zadania

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

Korzystanie z wcześniej zarezerwowanych zasobów

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.

Rezerwowanie zasobów obliczeniowych

Opis 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:

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

 

Rezerwowanie zasobów

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

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

 

Anulowanie rezerwacji

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