Batchbetrieb mit SLURM

Batchbetrieb

Ein Cluster ist ein Verbund von vernetzten Computern. Um ein Programm auf dem Linux-Cluster zu starten, müssen Ressourcen wie Rechenzeit, Anzahl der benötigten Prozessoren, Hauptspeichergröße usw reserviert werden. Dafür muss dem sogenannten "Workload Manager" SLURM (Simple Linux Utility for Ressource Management) eine Submit-Script Datei übergeben werden, welche von Ihnen geschrieben werden muss. In dieser Datei werden die zu reservierenden Ressourcen und natürlich die Befehle zum Starten des Programms aufgeführt. Zum Schreiben eines Submit-Scripts können Sie unseren grafischen Script-Generator benutzen. Das Abschicken des Auftrags können sie vom its-cs1.its.uni-kassel.de durchführen.

Wurde der Rechenauftrag als Submit-Script SLURM übergeben, wird er als "Job" in eine Warteschlange (Queue) geleitet und automatisch gestartet, wenn die angeforderten Ressourcen verfügbar sind. Während der Ausführung des Jobs steht allen Servern durchgängig das Homeverzeichnis des Users zur Verfügung, welcher den Job abgeschickt hat. Es können also z.B. Programme im Homeverzeichnis des Users gestartet und Daten von dort gelesen und Ergebnisse dort hin geschrieben werden. Sie können im Submit-Script angeben, dass sie eine Email bekommen möchten, wenn ein Job fertig ist.

Das Vorgehen, Jobs in einer Warteschlage warten zu lassen, um sie später auszuführen, nennt man "Batchbetrieb". Eingaben von Tastatur oder das Starten von grafischen Oberflächen ist dabei nicht möglich. Alle Ausgaben des Programms werden aber in eine Datei umgeleitet, welche Sie im Submit-Script definieren können. Als Alternative zum Batchbetrieb können Rechnersysteme reserviert werden, worauf interaktiv mit diesen gearbeitet werden kann. Das sollte allerdings nur verwendet werden, wenn während des Programmablaufs die Anzeige von grafische Oberflächen und Eingaben durch den Benutzer nötig sind. Das interaktive Arbeiten ist deutlich umständlicher als der Batchbetrieb, da ähnliche Angaben wie in einer Submit-Script Datei jedes mal auf der Kommandozeile eingegeben werden müssen.

Gehen Sie so vor, wenn sie ein rechenaufwändiges Programm starten wollen:

  • Informieren Sie sich über die vorhandene Knoten und Partitionen (sinfo)
  • Definieren Sie welche Hardware-Ressourcen und Module Sie benötigen und wie das Programm ausgeführt werden soll (Submit-Script)
  • Lassen Sie das Submit-Script von Slurm ausführen (sbatch)
  • Beobachten Sie Ihren Job (squeue) oder lassen Sie sich informieren, wenn der Job beendet ist (email im Submit-Script eintragen)  

Diese einzelnen Schritte werden in den weiteren Kapiteln genauer erklärt.

Job Priorität

Die Paritionen beinhalten teilweise die gleichen Nodes. Batchjobs werden in der Partition minijobs mit höherer Priorität gestartet, als in den den Partitionen public, exec, mpi und mpi1.

Die Priorität eines Batchjobs erhöht sich mit der Dauer der Wartezeit in der Job-Queue. Unabhängig davon werden Jobs vorgezogen, wenn ihre Ressourcenanforderungen es erlauben, dass sie abgearbeitet werden können, ohne die Wartezeit von Jobs mit höherer Priorität zu verlängern.

Benötigt beispielsweise ein Job mit hoher Priorität zwei Rechner, von denen einer noch belegt und der andere bereits frei ist, so kann der freie Rechner noch solange Aufträge mit geringerer Priorität annehmen, bis der andere Rechner ebenfalls frei ist.

Der Ressourcenmanger richtet sich bei der Zuteilung der Jobs nach den Ressourcenanforderungen, die beim Starten des Jobs gemacht wurden. Für einen optimalen Betrieb des Linux-Clusters ist es deshalb wichtig, realistische Angaben zu den benötigten Ressourcen eines Batchjobs zu machen.

Wollen Sie viele Nodes gleichzeitig allokieren sollten Sie sich zunächst mit sinfo anzeigen lassen, wie viele Nodes sich in der von ihnen gewählten Partition befinden und viele viele davon aktuell belegt sind.