Richten Sie SGE so ein, dass jeder Knoten vollständig gefüllt wird, anstatt Jobs zu verteilen.

Richten Sie SGE so ein, dass jeder Knoten vollständig gefüllt wird, anstatt Jobs zu verteilen.

Ursprünglich versehentlich auf Stack Overflow gepostet ... Die Antwort auf diesen Post finden Sie unten in PS.

Ich habe eine Weile danach gesucht, kann aber keine Antwort finden. Mein Problem ist folgendes: Angenommen, ich habe ein SGE mit zwei 12-CPU-Maschinen eingerichtet. Ich habe zwei 1-CPU-Jobs, die ich an das Grid senden möchte, aber andere Benutzer möchten häufig 12-CPU-Jobs senden. Dabei handelt es sich um Jobs mit gemeinsam genutztem Speicher, die nicht auf mehrere Maschinen aufgeteilt werden können. Manchmal sende ich meine beiden Jobs und sie gehen jeweils an eine separate Maschine, sodass auf jeder 11/12 CPUs frei bleiben. Dies verhindert dann, dass andere 12-CPU-Jobs ausführen, während ich arbeite.

Gibt es eine Möglichkeit, das zu umgehen? Ich weiß, dass Sie die Fillup-Regeln verwenden können, um einen einzelnen Qsub zu steuern (Fillup kann also dafür sorgen, dass ein 12-CPU-Qsub entweder auf einer Maschine bleibt, auf mehrere aufgeteilt wird usw.), aber gibt es eine vergleichbare Einstellung, um separate Qsubs zu zwingen, zur selben Maschine zu gehen? Ich weiß auch, dass ich explizit eine bestimmte Maschine anfordern kann (ich glaube, es ist -h machinename oder etwas Ähnliches), aber ich hätte lieber eine robustere Einrichtung als diese.

Jede Hilfe ist willkommen. Danke!

PS: Auf den Stack Overflow-Beitrag kam eine Antwort, bevor der Thread geschlossen wurde, mit dem Vorschlag, die parallele Umgebung „allocation_rule=$fill_up“ zu verwenden. Sofern ich beim Ausprobieren nichts falsch gemacht habe, glaube ich nicht, dass das das Problem löst. Nach dem, was ich beim Testen gesehen habe, bedeutet dies, wenn ich „fill_up“ einstelle, dass die INNERHALB eines einzelnen Qsubs angeforderten CPUs nach Möglichkeit auf dieselbe Grid-Maschine gesetzt werden, aber CPUs von VERSCHIEDENEN Qsubs werden trotzdem auf die Maschine mit geringer Auslastung (oder was auch immer das Grid wählt) gesetzt und könnten auf eine leere Maschine gehen. Der Test hierfür umfasste das Qsubben einiger einzelner CPU-Jobs, das Warten von ca. 5 Minuten und das Senden einiger weiterer. Obwohl die erste Gruppe manchmal auf derselben Maschine landete (ich vermute, weil die Maschinenauslastung nicht in Echtzeit erfolgt, wurden sie also alle auf dieselbe Maschine mit geringer Auslastung gesendet?), ging die zweite Gruppe nicht durchgängig auf dieselbe Maschine wie die erste Gruppe.

Antwort1

Die Standardeinstellung des Schedulersload_forumlaEinstellung istnp_load_avgDadurch werden neue Jobs den Knoten mit der niedrigsten durchschnittlichen Auslastung zugewiesen. Um stattdessen Knoten zu füllen, können Sie Folgendes festlegen:LadeformelZuSchlüsselSo zeigen Sie die aktuellen Zeitplaneinstellungen an:

qconf -ssconf

So ändern Sie die Einstellungen:

qconf -msconf

verwandte Informationen