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

Ben*_*ben 10 memory-usage ram ulimit

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

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

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

谢谢你。

mur*_*uru 9

我认为这可以使用cgroups

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

cgcreate -g memory,cpu:mpigroup
cgset -r memory.limit_in_bytes=$((50*1024*1024*1024)) mpigroup
Run Code Online (Sandbox Code Playgroud)

然后,如果 mpiexec 已经在运行,将它引入这个 cgroup:

cgclassify -g memory,cpu:mpigroup $(pidof mpiexec)
Run Code Online (Sandbox Code Playgroud)

或者mpiexec在这个 cgroup 中执行:

cgexec -g memory,cpu:mpigroup mpiexec -16 ...
Run Code Online (Sandbox Code Playgroud)