Wie kann ich die maximale Anzahl laufender Jobs pro Benutzer in SGE festlegen?

9

Wir verwenden SGE (Sun Grid Manager). Wir haben einige Einschränkungen hinsichtlich der Gesamtzahl der gleichzeitigen Jobs aller Benutzer.

Ich möchte wissen, ob es möglich ist, die Anzahl der gleichzeitig ausgeführten Jobs für einen bestimmten Benutzer vorübergehend und freiwillig zu begrenzen.

Zum Beispiel ist der Benutzer daveim Begriff, 500 Jobs einzureichen, aber er möchte, dass nicht mehr als 100 Jobs gleichzeitig ausgeführt werden, z. B. weil er weiß, dass die Jobs viele E / A-Vorgänge ausführen, die das Dateisystem blockieren (wahre Geschichte, leider).

Ist das möglich?

David B.
quelle

Antworten:

9

Sie können einen Komplex mit definieren qconf -mc. Nennen Sie es so high_iooder so, wie Sie möchten, und setzen Sie das Verbrauchsmaterialfeld auf YES. Dann entweder in der globalen Konfigurations mit qconf -me globaloder in einer bestimmten Warteschlange mit qconf -mq <queue name>Satz high_io=500in den komplexen Werten. Sagen Sie Ihren Benutzern nun, dass sie angeben sollen -l high_io=1oder wie viele "Token" sie verwenden sollen. Dadurch wird die Anzahl der gleichzeitigen Jobs auf den Wert begrenzt, auf den Sie den komplexen Wert festgelegt haben.

Der andere Weg, dies zu tun, ist mit Quoten. Fügen Sie eine Quote hinzu qconf -arqs, die ungefähr so ​​aussieht:

 {
        name         dave_max_slots
        description  "Limit dave to 500 slots"
        enabled      true
        limit        users {dave} to slots=500
 }
Kamil Kisiel
quelle
Danke Kamil und entschuldige die späte Antwort. Ein paar Follow-ups, da ich ziemlich neu bin qconf. Könnten Sie in Bezug auf Ihren ersten Vorschlag etwas expliziter sein? Was ist "Verbrauchsmaterial"? Nachdem ich wie erwähnt konfiguriert habe, fordere ich den Benutzer einfach auf, qsubmit -l high_io=1?
David B
1
Grundsätzlich ist ein Komplex eine Wertressource, die von einem Job mit dem -lWechsel zu angefordert werden kann qsub. Wenn Sie einen Komplex als Verbrauchsmaterial festlegen, wird die verfügbare Anzahl verringert, wenn ein Job diesen Komplex anfordert. Wenn also eine Warteschlange 500 des high_io-Komplexes enthält und ein Job 20 anfordert, stehen 480 für andere Jobs zur Verfügung. Sie würden den Komplex genau wie in Ihrem Beispiel anfordern.
Kamil Kisiel
Danke Kamil. Entschuldigung, ich kann nicht abstimmen (noch nicht genug Ruf).
David B