How to set a memory limit for a specific process?
12,067
I think this can be done using cgroups
:
Create a cgroup named mpigroup
(or whatever name you choose) with a memory limit (of 50GB, for example):
cgcreate -g memory,cpu:mpigroup
cgset -r memory.limit_in_bytes=$((50*1024*1024*1024)) mpigroup
Then, if mpiexec is already running, bring it into this cgroup:
cgclassify -g memory,cpu:mpigroup $(pidof mpiexec)
Or execute mpiexec
within this cgroup:
cgexec -g memory,cpu:mpigroup mpiexec -16 ...
Related videos on Youtube
Author by
Benben
Updated on September 18, 2022Comments
-
Benben over 1 year
I tried to execute
mpiexec -16 ...
on a 384 GB RAM server, but it induced OOM Killer and was aborted.How can I set a memory limit for
mpiexec
execution?I know
ulimit
, but it might affect other processes.Thank you.
-
heemayl over 7 yearsShouldn't the
memory
controller be enough:cgcreate -g memory:mpigroup
? -
muru over 7 years@heemayl should be. I just lifted this example straight from the wiki
-
Aquarius Power almost 7 yearssettings are stored at /sys/fs/cgroup/memory/, and to work sudo is required even if it dont fail while not using sudo
-
Aquarius Power almost 7 yearsI managed to limit the physical memory to 2GB, worked perfectly, but the virtual memory was still going to 8GB, but that was completely ok because the wine game would just use the swap instead of sending all other linux applications to swap, and that made the whole system work better! thx!