关于限制单个进程的资源有很多问题和答案,例如RLIMIT_AS可以用来限制进程分配的最大内存,可以看成是VIRT之类的top。有关该主题的更多信息,例如这里有没有办法限制特定进程在 Unix 中可以使用的内存量?
setrlimit(2) 文档说:
通过 fork(2) 创建的子进程继承其父进程的资源限制。跨 execve(2) 保留资源限制。
应该这样理解:
如果一个进程的 RLIMIT_AS 为 2GB,那么它不能分配超过 2GB 的内存。当它产生一个子进程时,2GB 的地址空间限制将传递给子进程,但从 0 开始计数。这两个进程一起最多可以占用 4GB 的内存。
但是,限制整个进程树分配的内存总量的有用方法是什么?