使用 cgroup 限制没有子进程的单个进程的内存

使用 cgroup 限制没有子进程的单个进程的内存

我需要限制进程的内存使用,但忽略它的所有子进程。我怎么做?首选使用 cgroup,但不是必需的。

注意:我想忽略所有当前和未来进程的子进程。我知道它可以逃脱限制,但这就是我所需要的。

答案1

就我而言prlimit --as=<virtual memory in bytes>有帮助。它并不总是正确工作(因为虚拟内存很棘手),因此请谨慎使用。您可能还想设置一个软限制prlimit --as=<limit>:

例子:

启动虚拟内存限制为 2 GB 的进程(软限制和硬限制)

prlimit --as=2147483648 -- process --with args

启动一个进程,虚拟内存限制为 2 GB(仅限软限制)

prlimit --as=2147483648: -- process --with args

启动一个进程,虚拟内存限制为 2 GB(仅限硬限制)

prlimit --as=:2147483648 -- process --with args

将现有进程限制为 2 GB 虚拟内存

prlimit --as=2147483648 --pid=<process pid>

将当前 shell 的虚拟内存限制为 2 GB

prlimit --as=2147483648 --pid=$$

相关内容