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.

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.