Zentrum für Datenverarbeitung (ZDV)

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.