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.

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 ...

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.