Backfill

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 Belegunsplan gefüllt werden und damit kann ein besserer Durchsatz im Cluster erreicht werden.

backfill.png
Backfilling

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.