【发布时间】:2017-08-07 20:27:47
【问题描述】:
有没有办法限制在进程组中花费的绝对 CPU 时间(以 CPU 秒为单位)?
ulimit -t 10; ./my-process 看起来是个不错的选择,但如果my-process 分叉,那么进程组中的每个进程都会有自己的限制。通过每 9 秒分叉一次,整个进程组可以使用任意时间。
similar question 上接受的答案是使用 cgroups,但没有解释如何使用。但是,还有其他答案 (Limit total CPU usage with cgroups) 说这在 cgroups 中是不可能的,并且只能限制相对的 cpu 使用率(例如,每 1 秒中有 0.2 秒)。
Liran Funaro 建议对cpu.cfs_period_us (https://stackoverflow.com/a/43660834/892961) 使用较长的时间段,但配额的参数最多为 1 秒。所以即使有很长一段时间,我也看不出如何将 CPU 时间限制设置为 10 秒或一个小时。
如果ulimit 和 cgroups 都无法做到这一点,还有其他方法吗?
【问题讨论】:
标签: linux time limit ulimit cgroups