Abschicken von Batchjobs
Das Batchsystem, respektive Torque, bietet für die Jobverwaltung folgende Befehle an:
Befehl | Beschreibung |
---|---|
qsub | schickt einen Job ab |
qstat | zeigt den Status der abgeschickten Jobs an |
qalter | verändert die Atribute eines Jobs |
qdel | löscht den angegebenen Job |
qsig | sendet ein Signal zum Job |
Die wichtigste Funktion des Batchsystems ist das Beauftragen der Jobs in Moab, das durch qsub veranlasst wird. Es folgt nun eine Beschreibung der Optionen des qsub Befehls:
Option | Beschreibung |
---|---|
-d path | Bestimmt das Arbeitsverzeichnis. Wenn keines angegeben wird, so wird das gerade verwendete Arbeitsverzeichnis verwendet |
-q destination | Gibt die angesteuerte queue an. Dies muss nicht angegeben werden, da das Batchsystem die passende queue anhand der angeforderten Ressourcen auswählt. |
-I | Startet einen interactiven Job (großes "i"). Dies ist essentiell dasselbe wie ein ssh-Zugang auf einen beliebigen freien Knoten |
-l resource_list | Dieser Parameter (kleines "L") gibt an, welche Ressourcen der abgeschickte Job benötigt, z.B. Anzahl der Knoten, Anzahl der Kerne, Walltime, Memory, etc. |
-M list | Mit diesem Parameter kann eine Liste von E-mail-adressen gesetzt werden, die vom PBS-System Mails erhalten |
-m mail_options | Dieser Parameter gibt an, wann eine E-mail gesendet werden soll. Dabei steht a=Abbruch, b=Beginn und e=Ende. Wenn man also bei Abbruch, Beginn und Ende des Jobs eine E-mail möchte, so drückt man dies durch "-m abe" aus |
-N | Setzt den Job-Name. Normalerweise wird der Job-Name durch den Script-Name gesetzt. |
-v variable_list | Durch dieses Kommando kann man Variablen setzen, die das Batch-System im ausführenden Verzeichnis setzt. |
-V | Dieses Kommando überträgt alle Variablen der aktuellen Umgebung in die Batch-Umgebung um. |
Eine ausführlichere Beschreibung der qsub Parameter finden sie auf den man pages von qsub: "man qsub".
Einen Job beauftragen
Ein einfaches Jobskript können Sie erstellen, indem Sie hier lesen.
Wenn Sie Ihr Skript erstellt haben, beauftragen Sie es durch "qsub jobscript.sh". Sie erhalten eine Job-ID als Rückgabewert.
Den Status Ihres Jobs können sie anschließend mit "qstat" überprüfen.
[<userid>@u-003-scfe03 queuetest]$ qsub jobscript.sh 161716.icmu03 [<userid>@u-003-scfe03 queuetest]$ qstat Job id Name User Time Use S Queue 161716.icmu03 jobscript.sh <userid> 00:00:00 R tue-short |
Die wichtigsten Status aus qstat sind:
Status | Beschreibung |
---|---|
Q | Queued: wartend |
T | Transfer: Unterwegs zur Ausführung |
R | Running: läuft |
C | Complete: erfolgreich oder fehlerhaft abgeschlossen |
H | Hold: zurückgehalten |
Wie werden Hardwareressourcen genutzt?
Der Befehl qsub bietet die Option -W, womit Sie bei der Beauftragung Ihres Jobs zusätzliche Jobattribute angegeben können.
Allgemein gilt folgende Befehlssequenz:
qsub -W attr_name=attr_value[,attr_name=attr_value...]
Für eine nähere Beschreibung der qsub-Direktive mit der Option -W sei auf man qsub verwiesen. Dieser Absatz behandelt das Attribut "depend" mit den Werten "afterok" und "afterany". Grundsätzlich werden die Jobs, zu denen Ihr Job in Abhängigkeit steht, durch einen Doppelpunkt getrennt mit Ihren Job-IDs angegeben.
depend=afterok
Mit Hilfe des Attributes depend=afterok können Sie Abhängigkeiten zwischen mehreren Jobs angeben. Der abgeschickte Job wird hiermit nur ausgeführt, wenn die benannten Jobs erfolgreich ausgeführt wurden.
qsub -W depend=afterok:jobid[:jobid]
Beispiel:
qsub -W depend=afterok:123.big.iron.com /tmp/script
Hier erhalten Sie detaillierte Informationen.
depend=afterany
Verwenden Sie das Attribut depend=afterany, um Ihren Job nach Abschluss eines anderen Jobs auszuführen. Die genannten Jobs können ohne oder mit einem Fehler abgeschlossen sein.
qsub -W depend=afterany:jobid[:jobid]
Beispiel:
qsub -W depend=afterany:123.big.iron.com /tmp/script
Details über das depend-Attribut und über andere zusätzlichen Attribute können Sie hier lesen.
Hardwareressource: Speicher
Wenn Sie Ihren Job in Auftrag geben, können Sie durch die Option -l je nach Bedarf Ressourcen angeben. Eine Ressourcenliste erhalten Sie hier. Dieser Abschnitt beschreibt beispielhaft die Attribute mem bzw. pmem, die die Größe des Speicherbedarfs festlegen.
mem=amount
Durch die Angabe von mem können Sie den maximal benötigten physikalischen Speicher, den Ihr Job belegen soll, festlegen. Torque wählt dann einen entsprechenden Knoten aus.
Beispiel:
qsub -l mem=300mb /home/user/script.sh
pmem=amount
Durch die Angabe von pmem spezifizieren Sie die Zuweisung jeden einzelnen Prozess Ihres Jobs die maximal benötigten pyhsikalischen Speicher.
Beispiel:
qsub -l pmem=50mb /home/user/script.sh
Wie fasst man mehrere Jobs zusammen?
Manchmal ist es notwendig mehrere Jobs auf einem Jobskript basierend auszuführen.
Damit qsub nicht mehrmals hintereinander aufgerufen wird, fasst ein Jobarray mehrere Jobs in einen zusammen und beauftragt sie gleichzeitig.
Jobarrays
Somit sind "Jobarrays" ein Verbund mehrer Jobs. Es ist möglich den Verbund als ganzes zu referenzieren, aber auch einen bestimmten Job aus dieser Jobmenge.
Ein job array wird durch "qsub -t" oder im Batchskript durch "#PBS -t" eingeleitet.
Sie können die Jobs, die in einem Jobarray zusammengefasst werden sollen, entweder als 0-4 oder aber auch als "0,1,2,3,4" angeben. Mit "%3" können Sie die Menge der Jobs, die gleichzeitig laufen sollen, beschränken.
> qsub jobscript.sh -t 0-4%3
1098[].hostname
> qstat -t
1098[0].hostname
1098[1].hostname
1098[2].hostname
1098[3].hostname
Lesen Sie hier mehr.