IT-Service der Fakultät für Physik
print

Sprachumschaltung

Navigationspfad


Inhaltsbereich

Rechencluster im CIP

Im CIP-Pool ist die Simple Linux Utility for Resource Management (SLURM) installiert. Es handelt sich hierbei um einen mächtigen Scheduler, der es erlaubt die Workstations im CIP als Rechen-Cluster zu betreiben. Für die Benutzer bedeutet dies, dass Batch-Jobs an diesen Cluster geschickt und verwaltet werden können.

Jobs schreiben

Technisch handelt es sich bei einem Job um eine einfache ausführbare Datei. Das kann ein bash-Skript, aber auch eine normale Binary sein. bash-Skripten sind hierbei zu bevorzugen, da in Ihnen Direktiven an den Scheduler übergeben werden können, zum Beispiel:

#! /bin/bash
#
# SLURM-Optionen
#
# Name des Jobs in der Queue ist "MeinJob"
#SBATCH --job-name MeinJob
#
# Kleiner Kommentar, damit die Admins wissen, was der Job genau macht
#SBATCH --comment "Das liest doch sowieso niemand..."
#
# Der Job soll erst um 20 Uhr starten, nachdem der CIP geschlossen hat
#SBATCH --begin 20:00
#
# Limit für die beanspruchte CPU-Zeit 12 Stunden
#SBATCH --time=12:00:00
# ...
#
# Aufruf der Hauptprogramme
echo "Hallo Welt!"
sleep 30

Selbstverständlich unterstützt SLURM die Verwendung von MPI-Bibliotheken für die Interprozesskommunikation.

Jobs starten

Die Interaktion mit dem CIP-Cluster erfolgt über Benutzer-Befehle des SLURM-Moduls. Bevor also irgendetwas mit dem Cluster gemacht werden kann, muss für die Benutzer-Shell das SLURM-Modul geladen werden. Dies geschieht mit dem Befehl

module load slurm

Erst jetzt stehen SLURM-Kommandos wie sbatch(1), scancel(1), sinfo(1), squeue(1),... und die zugehörigen man-pages zur Verfuegung. Die aktuelle Shell ist nun für die Interaktion mit dem Cluster vorbereitet.

Wurden die gewünschten Optionen für den Job wie oben vorgeschlagen in ein bash-Skript geschrieben, dann reduziert sich das Senden an die Queue zum Beispiel lediglich auf den Befehl

Ben.Utzer@cipXY:~$ sbatch myjob.sh
Submitted batch job 3

Handelt es sich bei dem Job um ein einzelnes Binary, dann müssen die Optionen dem Befehl sbatch direkt nachgestellt werden:

sbatch -J MeinJob ... ./JobBinary

Die Ergebnisse der Berechung werden schliesslich in das aktuelle Arbeitsverzeichnis des Jobs geschrieben. Dort wird von SLURM die Datei "slurm-%jobid.out" angelegt, wobei %jobid durch die entsprechende ID des Jobs aus squeue ersetzt wird. Im obigen Beispiel wird eine Datei mit dem Namen "slurm-3.out" im Heimverzeichnis angelegt; mit dem Inhalt

Hallo Welt!

Jobs verwalten

Um den Status des Clusters zu überprüfen kann ganz einfach der Befehl sinfo ausgeführt werden:

Ben.Utzer@cipXY:~$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
cip         up   infinite     1 alloc cip2-1
cip         up   infinite    24  idle cip[51-56],cip2-[2-19]

Hier kann man sehen, dass der Beispiel-Job von oben nur die Resourcen von einem Rechner (cip2-1) beansprucht. Den genauen Status der Queue und gegebenenfalls den Status des eigenen Jobs kann man mit squeue betrachten:

Ben.Utzer@cipXY:~$ squeue
JOBID PARTITION     NAME      USER ST TIME NODES NODELIST(REASON)
    3       cip myjob.sh Ben.Utzer  R 0:17     1 cip2-1

Die Ausgabe dieses Befehls liefert auch die Job-ID Ihres Jobs, über welche man den Job mit SLURM-Kommandos ansprechen kann. So können zum Beispiel mit Hilfe von scancel beliebige Signale an die Prozesse des Jobs gesendet werden

scancel --signal=SIGNAL_NAME %jobid

oder die Jobs gleich abgebrochen werden:

scancel %jobid

Weitere Informationen

Weiteres erfährt man mit Hilfe der man-pages - z.B.

man squeue

oder liest in der offiziellen Dokumentation nach.


Servicebereich

Aktuelle Meldungen