如何为特定进程设置内存限制?

我试图在384 GB RAM服务器上执行mpiexec -16 ...但是它引发了OOM Killer并且被中止了。

如何为mpiexec执行设置内存限制?

我知道ulimit ,但它可能会影响其他进程。

谢谢。

我认为这可以使用cgroups来完成:

创建一个名为mpigroup (或您选择的任何名称)的cgroup,其内存限制(例如50GB):

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

然后,如果mpiexec已经运行,请将其带入此cgroup:

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

或者在这个cgroup中执行mpiexec

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