TUHH > Servicebereiche > Rechenzentrum > Pools/Server > PBSpro

PBSpro Batch-System

Auf dem Parallelrechner SGI Altix sowie den Linuxclustern Hali und Apis wird das Batchsystem PBSpro der Firma Altair eingesetzt.

Wichtige Befehle und Optionen

qsub: Absenden von Batch-Jobs

In der Kommandozeile werden Batch-Jobs mit qsub mein_job abgeschickt. Wichtige qsub-Optionen sind in der folgenden Tabelle zusammengefasst. Sie können als Kommandozeilenoptionen z.B. qsub -l walltime=4:00:00 mein_job oder zeilenweise im Batchskript z.B.
#PBS -l walltime=4:00:00
angegeben werden, siehe auch die Beispielskripte unten auf dieser Seite. Sind Optionen doppelt, im Skript und in der Kommandozeile, angegeben, übernimmt PBSpro den Wert aus der Kommandozeile.

Eine Queue sollte nicht angegeben werden. PBSpro wählt die Queue an Hand der geforderten Ressourcen.

qsub Option Beispiel Bemerkung
-M <Mailadresse> -M name@tu-harburg.de Muss angegeben werden, weil Systemmails sonst nicht ankommen!
-l <resource> -l ncpus=4 SMP-paralleler Job auf 4 Cores. Default: 1 Core.
-l mem=8gb Job benötigt max. 8 GB RAM Memory.
-l mem_per_core=eins Job benötigt max. 1GB RAM pro Prozess/Thread.
1GB RAM/Core ist Minimalausstattung auf Hali, Altix und Apis.
-l walltime=1:30:0 Job wird max. 1 Stunde, 30 Min., 0 Sek. laufen. Default: 6 Stunden.
-l select=4:os=rhel:ncpus=12 Job soll auf 4 Red-Hat-Knoten mit je 12 Kernen laufen
-W depend=<cond>  
-W depend=afterok:job1
-W depend=afternotok:job1
-W depend=afterany:job1
Der Job wird gestartet, wenn
  'job1' ohne Fehler beendet ist,
  'job1' mit Fehler abgebrochen wurde,
  'job1' ohne oder mit Fehler beendet ist.
-r n markiert Job als not rerunnable, d.h. Job wird nach Neustart von PBSpro (z.B. Wartung, Rechnerabsturz) nicht neu gestartet.
-I   Interaktiver Job. qsub -I muss in der Kommandozeile aufgerufen werden, #PBS -I im Skript wird ignoriert.
-N <jobname> -N my_job Name des Batchjobs, max. 15 Zeichen. Default: Skriptname.
-m [abe|n] -m ae PBS sendet Mailnachricht, wenn Job abgebrochen wird (a), startet (b), endet (e) oder nie (n). Default: Mail bei Abbruch.
-o <filename>
-e <filename>
-o job1.out
-e job1.error
Lenkt Standard Output bzw. Error um. Default: <jobname>.o<job_id> bzw. <jobname>.e<job_id>.
-j oe -o job1.out -j oe Schreibt Standard Output und Error in den selben File, -e wird ignoriert.
-V   Alle Umgebungsvariablen werden aus der Shell übernommen, von der aus qsub aufgerufen wird.
Praktisch, um ssh-Authentifizierung für Grafikausgabe zu übergeben (nur altix4).
Unerwünschte Nebeneffekte möglich!
-l core=<type> -l core=single
-l core=dual
-l core=quad
-l core=hexa
Prozessortyp festlegen. Man beachte die Bestückung der Compute Server mit den verschiedenen Mehrkernprozessoren. Dies ist oftmals eine unnötige Einschränkung für PBSPro.
-l vnode=<host> -l vnode=hali15 Rechenknoten festlegen, dies ist eine starke Einschränkung für PBSPro.

qstat: Jobs anzeigen

  • qstat -a zeigt eine Liste aller laufender und wartender Jobs mit u.a. Job-ID, Anzahl der Cores, angeforderter Laufzeit, und ggfls. der bisherigen Laufzeit.
  • qstat -au <User> zeigt eine Liste aller Jobs des Nutzers <user>.
  • qstat -f <Jobid> gibt Details zum Job <Jobid> aus. Interessant ist u.a.
    • der tatsäliche Hauptspeicherbedarf resources_used.mem,
    • die Laufzeit resources_used.walltime,
    • auf Hali die Knoten, auf denen der Job rechnet exec_host.
Beendete Jobs kann qstat nicht anzeigen. Hier hilft tracejob, z.B. gibt tracejob -n 10 12345 den Verlauf von Job 12345 in den letzten 10 Tagen an.

qout: Ausgabe laufender Jobs anzeigen

Die Jobausgabe wird erst nach Jobende in die Ausgabedatei geschrieben. Die Ausgabe laufender Jobs kann man mit qout <jobid> anzeigen.

qalter: Parameter wartender Jobs ändern

Solange Jobs noch in der Queue warten, können mit qalter <Optionen> <Job-ID> z.B. die Ressourcenanforderung erhöht oder gesenkt, der Jobname geändert oder E-Mail-Benachrichtigungen angefordert werden. Die Syntax der Optionen von qalter entspricht der von qsub.

qdel: Jobs löschen

Jeder Nutzer kann seine eigenen wartenden oder laufenden Jobs mit qdel <Job-ID> löschen.

xpbs: graphisches Frontend

Alle Aufgaben können auch mit Hilfe des graphischen Frontends xpbs erledigt werden.


PBSpro Dokumentation


Beispielskripte

Serieller Job

Ein kurzer Job mit umgelenkter Ausgabe und Umbenennung im File job1. Hier wird der Ressourcenverbrauch mit qstat -f angezeigt, um für folgende Jobs Hauptspeicher und Rechenzeit abschätzen zu können.
#!/bin/bash
#PBS -o myjob.out 
#PBS -j oe 
#PBS -l walltime=0:15:00 
#PBS -l ncpus=1

# Modules initialisieren
. /etc/profile.d/module.sh

# Intel-Compilerumgebung laden 
# (z.B. falls ./my_programm die MKL nutzt)
module load intel 

# In das Arbeitsverzeichnis wechseln 
#  (alternativ explizite Pfadangabe)
cd $PBS_O_WORKDIR

./my_program 

# Ressourcenverbrauch ausgeben
qstat -f $PBS_JOBID           

exit

Paralleler Job mit MPI auf der SGI Altix

PBS setzt die Variablen OMP_NUM_THREADS und NCPUS auf die Anzahl der verwendeten Prozessoren. Da ein reiner MPI-Job ohne Threads arbeitet, sollte OMP_NUM_THREADS explizit auf 1 gesetzt werden.
#!/bin/bash 
#PBS -o myjob.out 
#PBS -j oe 
#PBS -l ncpus=8 
#PBS -l walltime=1:30:00 
#PBS -M name@tu-harburg.de

cd $PBS_O_WORKDIR 

export OMP_NUM_THREADS=1 
mpirun -np $NCPUS ./myprog 

qstat -f $PBS_JOBID

Paralleler Job mit Shared Memory (OpenMP,...) auf SGI Altix

Die Variable OMP_NUM_THREADS wird von PBS gesetzt. Auf der SGI Altix bindet das Kommando dplace die einzelnen Threads fest an jeweils einen Core, damit ein Thread nicht von seinem lokalen Hauptspeicher weg auf ein anderes Board migriert werden kann.
Außerdem fordert dieser Job viel Hauptspeicher an.

#!/bin/bash 
#PBS -o myjob.out 
#PBS -j oe 
#PBS -l ncpus=8
#PBS -l walltime=1:30:00 
#PBS -l mem=59gb
#PBS -M name@tu-harburg.de

cd $PBS_O_WORKDIR
dplace -x2 -c0-$((OMP_NUM_THREADS-1)) ./myprog 

qstat -f $PBS_JOBID

Hybrider paralleler Job mit MPI und Shared Memory auf der SGI Altix

Im folgenden Skript wird die Anzahl der MPI-Tasks automatisch aus der Zahl angeforderter Prozessoren (NCPUS) und der Threads po Task (OMP_NUM_THREADS) bestimmt.
#!/bin/bash 
#PBS -o myjob.out 
#PBS -j oe 
#PBS -l ncpus=12 
#PBS -l walltime=1:30:00 
#PBS -M name@tu-harburg.de

export OMP_NUM_THREADS=4 
export MPI_TASKS=$(($NCPUS / $OMP_NUM_THREADS)) 
export MPI_OPENMP_INTEROP=yes 

cd $PBS_O_WORKDIR 
mpirun -np $MPI_TASKS ./myprog 
qstat -f $PBS_JOBID

Ansprechpartner

Fragen, Anregungen? Wenden Sie sich an die Ansprechpartner zum wissenschaftlichen Rechnen im RZ!