QCG Simple jest zbiorem prostych narzędzi wzorowanych na poleceniach systemów kolejkowych umożliwiających zlecanie i kontrolowanie zadań w infrastrukturze PL Grid.
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ą prefrencje/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 ktorej następuje nazwa dyrektywy i opcjonalne parametry.
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 jobId = J1364242615483__2780
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 TASK NOTE SUBMISSION TIME START TIME FINISH TIME STATUS HOSTNAME J1364226630231__6828 task 25.03.13 16:50 PENDING zeus J1364242615483__2780 task 25.03.13 21:16 25.03.13 21:17 RUNNING zeus Number of tasks: PENDING : 1 RUNNING : 1 TOTAL: 2
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-info J1364242615483__2780 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 49 Minutes 23 Seconds Note: UserDN: /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek TaskType: SINGLE SubmissionTime: Mon Mar 25 21:16:55 CET 2013 FinishTime: ProxyLifetime: P20DT23H49M34S Status: RUNNING StatusDesc: StartTime: Mon Mar 25 21:16:56 CET 2013 Allocation: HostName: zeus.cyfronet.pl ProcessesCount: 1 ProcessesGroupId: Status: RUNNING StatusDescription: SubmissionTime: Mon Mar 25 21:16:55 CET 2013 FinishTime: LocalSubmissionTime: Mon Mar 25 21:16:59 CET 2013 LocalStartTime: Mon Mar 25 21:17:25 CET 2013 LocalFinishTime:
Po zakończeniu zadania (stan FINISHED) w katalogu, z którego zlecano zadanie dostępne będą pliki: J1364242615483__2780.output J1364242615483__2780.upper
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > cat J1364242615483__2780.output Liczba znakow: 23 upper.txt Koniec: Mon Mar 25 21:19:32 CET 2013
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > cat J1364242615483__2780.upper QOSCOSGRID - PLGRID
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 jobId = J1364245522691__0345
[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 TASK NOTE SUBMISSION TIME START TIME FINISH TIME STATUS HOSTNAME J1364226630231__6828 task 25.03.13 16:50 PENDING zeus J1364245522691__0345 task 25.03.13 22:05 25.03.13 22:06 RUNNING zeus Number of tasks: PENDING : 1 RUNNING : 1 TOTAL: 2
[qcg] /home/plgrid/plgpiontek/reef/SANDBOX/podrecznik > qcg-cancel J1364245522691__0345 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 -S 1h -s canceled 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 57 Minutes 24 Seconds JOB IDENTIFIER TASK NOTE SUBMISSION TIME START TIME FINISH TIME STATUS HOSTNAME J1364245522691__0345 task 25.03.13 22:05 25.03.13 22:06 25.03.13 22:08 CANCELED zeus
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).
[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$ echo $PBS_ 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 c011 c024 c024 plgpiontek@c011:/mnt/lustre/inula/qcg/plgpiontek/J1364246860791__3941_task_1364246861194_441$ exit exit [qcg] /home/plgrid/plgpiontek/reef/INTERACTIVE >