Як встановити ліміт пам’яті для конкретного процесу?


10

Я намагався виконати mpiexec -16 ...на сервері оперативної пам’яті 384 ГБ, але це спричинило вбивцю OOM і було перервано.

Як можна встановити ліміт пам’яті для mpiexecвиконання?

Я знаю ulimit, але це може вплинути на інші процеси.

Дякую.

Відповіді:


9

Я думаю, що це можна зробити за допомогою cgroups:

Створіть групу з назвою mpigroup(або будь-яке ім'я), з обмеженням пам’яті (наприклад, 50 Гб):

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

Потім, якщо mpiexec вже запущений, введіть його в цю групу:

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

Або виконати mpiexecв цій групі:

cgexec -g memory,cpu:mpigroup mpiexec -16 ...

Чи не memoryповинно вистачити контролера cgcreate -g memory:mpigroup:?
heemayl

@heemayl має бути. Я щойно підняв цей приклад прямо з вікі
муру

налаштування зберігаються в / sys / fs / cgroup / memory /, і для роботи sudo потрібно навіть у тому випадку, якщо він не виходить з ладу, не використовуючи sudo
Aquarius Power

Мені вдалося обмежити фізичну пам'ять до 2 Гб, працював ідеально, але віртуальна пам'ять все ще збиралася до 8 ГБ, але це було цілком нормально, тому що винна гра буде просто використовувати своп замість того, щоб відправляти всі інші програми Linux для заміни, і це зробило вся система працює краще! Дякую!
Сила Водолія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.