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