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


10

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

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

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

谢谢。

Answers:


9

我认为可以使用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)

mpiexec在此cgroup中执行:

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

如果没有memory控制足够:cgcreate -g memory:mpigroup
heemayl

@heemayl应该是。我刚刚解禁这个例子直接从维基
穆鲁

设置存储在/ sys / fs / cgroup / memory /中,即使不使用sudo也不会失败,仍需要sudo才能工作
Aquarius Power

我设法将物理内存限制为2GB,可以很好地工作,但是虚拟内存仍然要达到8GB,但这完全可以,因为Wine游戏将只使用swap而不是发送所有其他linux应用程序进行交换,因此整个系统工作更好!谢谢!
Aquarius
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.