我现在已经多次遇到这样的情况:某个程序进入无限循环,导致整个机器完全没有响应,有一次甚至是外国的 JavaScript,我不得不关机。这是不可接受的,所以我想限制进程的CPU使用率。使用limits.conf
似乎很明显,但它说单位是max CPU time (MIN)
。但据我所知,CPU时间是CPU花在做事情上的时间,在这种情况下,完整的时间范围是未知的。 1 CPU 分钟的限制意味着什么? (在旁注中,ulimit
声称单位是秒,这会导致更多混乱......)那么,我如何设置诸如“永远不允许任何进程在任何给定点使用超过一半的CPU”之类的内容及时”
答案1
您不能这样做ulimit
,有一个工具可以通过暂停和取消暂停进程来做到这一点(cpulimit
)。它可能是您操作系统的一部分,是 Debian 的一部分,但默认情况下未安装。还有内核命名空间。但是您不需要这样做。 Unix 在这种情况下表现还不错。你也可以使用nice,但是我很少看到需要它的情况。您的问题可能有其他原因,例如交换。