Wie lege ich ein Speicherlimit für einen bestimmten Prozess fest?

10

Ich habe versucht, mpiexec -16 ...auf einem 384-GB-RAM-Server auszuführen , aber es hat OOM Killer ausgelöst und wurde abgebrochen.

Wie kann ich ein Speicherlimit für die mpiexecAusführung festlegen ?

Ich weiß ulimit, aber es könnte andere Prozesse beeinflussen.

Vielen Dank.

Benben
quelle

Antworten:

9

Ich denke, dies kann getan werden mit cgroups:

Erstellen Sie eine cgroup mit dem Namen mpigroup(oder einem beliebigen Namen) mit einem Speicherlimit (z. B. 50 GB):

cgcreate -g memory,cpu:mpigroup
cgset -r memory.limit_in_bytes=$((50*1024*1024*1024)) mpigroup

Wenn mpiexec bereits ausgeführt wird, bringen Sie es in diese cgroup:

cgclassify -g memory,cpu:mpigroup $(pidof mpiexec)

Oder führen Sie mpiexecinnerhalb dieser Gruppe aus:

cgexec -g memory,cpu:mpigroup mpiexec -16 ...
muru
quelle
Sollte der memoryController nicht ausreichen : cgcreate -g memory:mpigroup?
Heemayl
@heemayl sollte sein. Ich habe gerade dieses Beispiel direkt aus dem Wiki gehoben
muru
Einstellungen werden unter / sys / fs / cgroup / memory / gespeichert, und um zu arbeiten, ist sudo erforderlich, auch wenn es nicht fehlschlägt, wenn sudo nicht verwendet wird
Aquarius Power
Ich habe es geschafft, den physischen Speicher auf 2 GB zu beschränken, hat perfekt funktioniert, aber der virtuelle Speicher war immer noch auf 8 GB eingestellt, aber das war völlig in Ordnung, da das Weinspiel nur den Swap verwenden würde, anstatt alle anderen Linux-Anwendungen zum Swap zu senden, und das machte Das ganze System funktioniert besser! Danke!
Wassermann Macht