当您想限制每个进程的CPU时间时,可以通过cgroups来完成。有两个参数可以完成这项工作:cpu.cfs_period_us和cpu.cfs_quota_us。
假设我想将进程限制为一个CPU核心。这可以通过以下方式完成:
cpu.cfs_quota_us 1.000.000
cpu.cfs_period_us 1.000.000与
cpu.cfs_quota_us 100.000
cpu.cfs_period_us 100.000与
cpu.cfs_quota_us 10.000
cpu.cfs_period_us 10.000这三种选择有什么区别?假设我有一个Firefox进程,什么cpu.cfs_period_us对它更好--更长还是更短?为什么?
发布于 2018-12-23 22:27:28
正如引用的那样,数字越低,延迟时间就越小。进程不需要等待很长时间就会被排定:每个进程都会很快转一圈。然而,有更多的重新调度开销:每次时间用完,还有其他准备运行的进程,就会有一个重新调度。
重新调度涉及保存堆栈上的所有寄存器,将堆栈指针保存到任务控制块,切换任务控制块,禁用/启用虚拟页表的部分,重新加载堆栈指针,以及恢复寄存器。它还会导致更多的缓存丢失。总之,事情进展得更慢。
对于长期运行的非交互式任务,较长的调度周期更好。批处理调度程序具有较长的调度周期,并且运行优先级低于标准交互式调度程序。
https://unix.stackexchange.com/questions/489481
复制相似问题