假设程序 #1 正在启动程序 #2,而程序 #2 正在启动程序 #3。
如果我打电话
ulimit -t 10
在调用程序#1之前,每个程序将分配10秒的CPU时间。
我可以将此限制应用于所有 3 个程序使用的总 CPU 时间吗?基本上,我指的是“top -S”显示的时间 - 这将显示包括所有生成的“子进程”在内的总累计 CPU 时间。
对我来说最有用的是让这种累积行为适用于“-t”(CPU 时间)。但如果我可以让它也适用于其他标志(最大内存使用等),那就太好了。
如果 ulimit 不能做到这一点,还有其他方法吗?
答案1
看一下 cgroups(“控制组”):
答案2
这个限制是按流程征收;只要它们被视为不同的进程(top、htop、ps),每个进程都会有限制。重写代码并使第二和第三个程序成为工作线程。