Jak ustawić limit pamięci dla określonego procesu?

10

Próbowałem wykonać mpiexec -16 ...na serwerze RAM o pojemności 384 GB, ale wywołało to OOM Killera i zostało przerwane.

Jak ustawić limit pamięci do mpiexecwykonania?

Wiem ulimit, ale może to wpłynąć na inne procesy.

Dziękuję Ci.

Benben
źródło

Odpowiedzi:

9

Myślę, że można to zrobić za pomocą cgroups:

Utwórz grupę o nazwie mpigroup(lub dowolnej innej nazwie ) z limitem pamięci (na przykład 50 GB):

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

Następnie, jeśli mpiexec już działa, przenieś go do tej grupy:

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

Lub wykonaj mpiexecw ramach tej grupy:

cgexec -g memory,cpu:mpigroup mpiexec -16 ...
muru
źródło
Czy memorykontroler nie powinien wystarczyć cgcreate -g memory:mpigroup:?
heemayl
@heemayl powinien być. Właśnie podniosłem ten przykład prosto z wiki
muru
ustawienia są przechowywane w / sys / fs / cgroup / memory /, i do pracy sudo jest wymagane, nawet jeśli nie zawiedzie, gdy nie używa sudo
Aquarius Power
Udało mi się ograniczyć pamięć fizyczną do 2 GB, działałem idealnie, ale pamięć wirtualna wciąż osiągała 8 GB, ale było to całkowicie OK, ponieważ gra w wino używałaby wymiany zamiast wysyłać wszystkie inne aplikacje linuksowe do wymiany, i to sprawiło, że cały system działa lepiej! dzięki!
Aquarius Power