首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cpu.cfs_period_us中使用更长/更短的周期有什么好处?

在cpu.cfs_period_us中使用更长/更短的周期有什么好处?
EN

Unix & Linux用户
提问于 2018-12-17 14:01:30
回答 1查看 805关注 0票数 4

当您想限制每个进程的CPU时间时,可以通过cgroups来完成。有两个参数可以完成这项工作:cpu.cfs_period_uscpu.cfs_quota_us

这里有一些关于参数的信息

  • cpu.cfs_period_us:用于带宽决定的每个调度程序周期的持续时间(以微秒为单位)。这默认为1000000 to或100 to。更长的周期将以牺牲延迟为代价来提高吞吐量,因为调度程序将能够在更长的时间内支持cpu绑定的工作负载。对于较小的周期则相反。请注意,这只会影响由CFS调度程序调度的非RT任务。
  • cpu.cfs_quota_us:当前组在每个cfs_period_us中的最大时间(以微秒为单位)将允许运行。例如,如果将其设置为cpu_period_us的一半,则cgroup将只能在50 %的时间内达到峰值运行。应该注意到,这代表了系统中所有CPU的累计时间。因此,为了允许充分使用两个CPU,一个应该将这个值设置为cfs_period_us值的两倍。

假设我想将进程限制为一个CPU核心。这可以通过以下方式完成:

代码语言:javascript
复制
cpu.cfs_quota_us   1.000.000
cpu.cfs_period_us  1.000.000

代码语言:javascript
复制
cpu.cfs_quota_us   100.000
cpu.cfs_period_us  100.000

代码语言:javascript
复制
cpu.cfs_quota_us   10.000
cpu.cfs_period_us  10.000

这三种选择有什么区别?假设我有一个Firefox进程,什么cpu.cfs_period_us对它更好--更长还是更短?为什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-12-23 22:27:28

正如引用的那样,数字越低,延迟时间就越小。进程不需要等待很长时间就会被排定:每个进程都会很快转一圈。然而,有更多的重新调度开销:每次时间用完,还有其他准备运行的进程,就会有一个重新调度。

重新调度涉及保存堆栈上的所有寄存器,将堆栈指针保存到任务控制块,切换任务控制块,禁用/启用虚拟页表的部分,重新加载堆栈指针,以及恢复寄存器。它还会导致更多的缓存丢失。总之,事情进展得更慢。

对于长期运行的非交互式任务,较长的调度周期更好。批处理调度程序具有较长的调度周期,并且运行优先级低于标准交互式调度程序。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/489481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档