it-swarm.com.de

slurm: Verwenden Sie einen beliebigen Knoten aus der Knotenliste

Ich habe ein paar tausend Jobs, die ich auf einem Slurm-Cluster mit 16 Knoten ausführen muss. Diese Jobs sollten nur auf einer Teilmenge der verfügbaren Knoten der Größe 7 ausgeführt werden. Einige Tasks sind parallelisiert. Verwenden Sie daher die gesamte CPU-Leistung eines einzelnen Knotens, während andere Single-Threading sind. Daher sollten mehrere Jobs gleichzeitig auf einem einzelnen Knoten ausgeführt werden. Keine der Aufgaben sollte über mehrere Knoten hinweg erscheinen.

Zur Zeit übergebe ich jeden Job bei:

sbatch --nodelist=myCluster[10-16] myScript.sh

Dieser Parameter bewirkt jedoch, dass der Slurm wartet, bis der übergebene Job beendet ist, und lässt somit 3 Knoten vollständig ungenutzt. Abhängig von der Task (Multi- oder Singlethreading) ist auch der derzeit aktive Knoten in Bezug auf die CPU-Kapazität schwach ausgelastet .

Was sind die besten Parameter von sbatch, die den Slurm dazu zwingen, mehrere Jobs gleichzeitig auf den angegebenen Knoten auszuführen?

15
Faber

Sie können andersherum arbeiten; Anstatt festzulegen, welche Knoten verwendet werden sollen, mit der Wirkung, dass jeder Job allen 7 Knoten zugewiesen ist, geben Sie an, welche Knoten nicht verwendet werden sollen:

sbatch --exclude=myCluster[01-09] myScript.sh

und Slurm wird niemals mehr als 7 Knoten für Ihre Jobs vergeben. Stellen Sie jedoch sicher, dass die Clusterkonfiguration die Knotenfreigabe zulässt und dass Ihr myScript.sh#SBATCH --ntasks=1 --cpu-per-task=n mit n die Anzahl der Threads jedes Jobs enthält.

22
damienfrancois

Einige der Tasks sind parallelisiert, verwenden also die gesamte CPU-Leistung eines einzelnen Knotens, während andere Single-Threading sind.

Ich verstehe, dass Sie möchten, dass die Single-Threaded-Jobs einen Knoten gemeinsam nutzen, während den parallelen Jobs ausschließlich ein ganzer Knoten zugewiesen werden soll.

mehrere Jobs sollten gleichzeitig auf einem einzelnen Knoten ausgeführt werden.

Was mein Verständnis von SLURM angeht, bedeutet dies, dass Sie CPU-Kerne als Verbrauchsressourcen definieren müssen (d. H. SelectType=select/cons_res und SelectTypeParameters=CR_Core in slurm.conf).

Um parallele Jobs auf einen ganzen Knoten zu beschränken, können Sie entweder die Option --exclusive verwenden (beachten Sie jedoch, dass die Partitionskonfiguration Vorrang hat: Sie können keine gemeinsamen Knoten haben, wenn die Partition für exklusiven Zugriff konfiguriert ist) oder -N 1 --tasks-per-node="number_of_cores_in_a_node". (zB -N 1 --ntasks-per-node=8).

Beachten Sie, dass Letzteres nur funktioniert, wenn alle Knoten die gleiche Anzahl von Kernen haben.

Keine der Aufgaben sollte über mehrere Knoten hinweg erscheinen.

Dies sollte durch -N 1 garantiert werden.

2
Riccardo Murri

Eigentlich denke ich, dass der Weg zuerst eine ' reservation ' ist. Laut dieser Präsentation http://slurm.schedmd.com/slurm_ug_2011/Advanced_Usage_Tutorial.pdf (letzte Folie).

Szenario: Reservieren Sie zehn Knoten in der Standard-SLURM-Partition ab Mittag und bei einer Dauer von 60 Minuten täglich. Die Reservierung ist nur für Benutzer alan und brenda verfügbar.

scontrol create reservation user=alan,brenda starttime=noon duration=60 flags=daily nodecnt=10
Reservation created: alan_6

scontrol show res
ReservationName=alan_6 StartTime=2009-02-05T12:00:00
    EndTime=2009-02-05T13:00:00 Duration=60 Nodes=Sun[000-003,007,010-013,017] NodeCnt=10 Features=(null) PartitionName=pdebug Flags=DAILY Licenses=(null)
    Users=alan,brenda Accounts=(null)

# submit job with:
sbatch --reservation=alan_6 myScript.sh

Leider konnte ich dieses Verfahren nicht testen, wahrscheinlich aufgrund fehlender Privilegien.

1
Faber