Zentrum für Datenverarbeitung (ZDV)

Abschicken von Batchjobs

Das Batchsystem, respektive Torque, bietet für die Jobverwaltung folgende Befehle an:

Befehl Beschreibung
qsubschickt einen Job ab
qstatzeigt den Status der abgeschickten Jobs an
qalterverändert die Atribute eines Jobs
qdellöscht den angegebenen Job
qsigsendet 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:

OptionBeschreibung
-d pathBestimmt das Arbeitsverzeichnis. Wenn keines angegeben wird, so wird das gerade verwendete Arbeitsverzeichnis verwendet
-q destinationGibt die angesteuerte queue an. Dies muss nicht angegeben werden, da das Batchsystem die passende queue anhand der angeforderten Ressourcen auswählt.
-IStartet einen interactiven Job (großes "i"). Dies ist essentiell dasselbe wie ein ssh-Zugang auf einen beliebigen freien Knoten
-l resource_listDieser Parameter (kleines "L") gibt an, welche Ressourcen der abgeschickte Job benötigt, z.B. Anzahl der Knoten, Anzahl der Kerne, Walltime, Memory, etc.
-M listMit diesem Parameter kann eine Liste von E-mail-adressen gesetzt werden, die vom PBS-System Mails erhalten
-m mail_optionsDieser 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
-NSetzt den Job-Name. Normalerweise wird der Job-Name durch den Script-Name gesetzt.
-v variable_listDurch dieses Kommando kann man Variablen setzen, die das Batch-System im ausführenden Verzeichnis setzt.
-VDieses 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.

[zrsbb01@u-003-scfe03 queuetest]$ qsub jobscript.sh

161716.icmu03

[zrsbb01@u-003-scfe03 queuetest]$ qstat

Job id Name User Time Use S Queue


161716.icmu03 jobscript.sh zrsbb01 00:00:00 R tue-short

Die wichtigsten Status aus qstat sind:

StatusBeschreibung
QQueued: wartend
TTransfer: Unterwegs zur Ausführung
RRunning: läuft
CComplete: erfolgreich oder fehlerhaft abgeschlossen
HHold: 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.