Verwaltung der Ressourcen
Das Batch-System verwaltet Ressourcen, wie CPUs und Speicher, weist diese wartenden Jobs zu und sorgt mit einer Methode namens Fairshare-Scheduling dafür, dass die verfügbare Rechenzeit gerecht unter den Nutzerinnen und Nutzer aufgeteilt wird und zur Priorität der Jobs. Weil der Speicher auf den Knoten unter den Jobs aufgeteilt wird, ist es sehr wichtig, die Speicheranforderungen möglichst genau abzuschätzen. Darüber hinaus wird ein weiterer Mechanismus, das sogenannte Backfill, eingesetzt, um Lücke in Scheduling-Plan zu füllen und damit die Ressourcennutzung zu optimieren.
Die Priorität eines Jobs wird hauptsächlich durch folgende Faktoren, in der Reihenfolge ihrer Wichtigkeit, bestimmt.
-
User-Shares - Die Anzahl der Shares im Sinne des Fairshare-Scheduling, die eine Nutzerin hat, bildet den Hauptfaktor. Je mehr Shares eine Nutzerin hat, desto höher wird die Priorität ihres Jobs sein. Der Verbrauch von CPU-Zeit, GPU-Zeit und Hautptspeicher (RAM) verringert die Anzahl von Shares und setzt damit die Priorität wartender Jobs ab.
- Job-Alter - Wie lange ein Job schon in der Warteschlange wartet, ist ein weiterer wichtiger Faktor. Allerdings ist der Wert begrenzt und erreicht nach ein gewisser Zeit ein Maximum.
- Job-Größe - Die Priorität von Jobs, die mehr Knoten beantragen, wird etwas erhöht.
Die Faktoren, die die Priorität der aktuell wartenden Jobs bestimmen, können mit folgendem Kommando angeschaut werden. Dabei werden die Ergebnisse werden nach der Gesamtpriorität sortiert.
sprio -Sy
Backfill ist ein Mechanismus, der dafür sorgt, dass ein Job mit niedriger Priorität vor einem mit höherer Priorität gestartet werden kann, ohne dass der Start des Jobs mit höherer Priorität verzögert wird.
In der Abbildung unten sei Job A ein Job, der gerade angelaufen ist. Job B, der die von Job A belegten Knoten sowie weitere Knoten benötigt, muss warten, bis Job A zu Ende ist. Falls Job C eine kürzere maximale Laufzeit hat als Job A, dann kann Job C vor Job B starten, auch wenn Job B eine höhere Priorität hat und ohne, dass der Start von Job B verzögert wird. So können "Lücken" im Belegungsplan gefüllt werden und damit kann ein besserer Durchsatz im Cluster erreicht werden.
Man beachte, dass ein Job nur dann von Backfilling profitieren kann, wenn die notwendige Laufzeit für den Job wesentlich kleiner ist, als das Default-Maximum und wenn diese Zeit angegeben wird. Als Beispiel für Slurm legt folgende Zeile
#SBATCH --time=2-12:00:00
eine Obergrenze von 2 Tagen und 12 Stunden fest. Je kürzer die angegebene Zeit, desto stärker kann der Job von Backfilling profitieren. Sollte der Job die Zeitgrenze allerdings erreichen, wird er vom Batch-System beendet. Vgl. man sbatch
für weitere Details.