首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cpu.cfs_ period_us是如何在cgroup和kernel.sched_cfs_bandwidth_slice_us中定义的?

cpu.cfs_ period_us是如何在cgroup和kernel.sched_cfs_bandwidth_slice_us中定义的?
EN

Unix & Linux用户
提问于 2019-03-09 06:45:00
回答 1查看 884关注 0票数 3

我一直试图了解Linux内核中的完全公平调度程序是如何控制CPU带宽的。

经过多次阅读,我仍然无法理解CFS如何允许每个CFS组定义自己的CFS周期,以及它如何与kernel.sched_cfs_bandwidth_slice_us sysctl设置相关联。

示例A:在一台CPU机器上,定义了两个具有不同CFS周期的cgroup。每个cgroup的配额占CPU时间的50%,总计100%。

代码语言:javascript
复制
cgroup-A: cpu.cfs_period_us=100ms
          cpu.cfs_quota_us=50ms
cgroup-B: cpu.cfs_period_us=1000ms
          cpu.cfs_quota_us=500ms

如果每个cgroup都有一个进程正在运行,那么在CFS期间(假设两个进程都需要CPU时间),这些进程是如何调度的?

例子B:当cgroup有一个比实际能够完成的更高的配额时,会发生什么?cgroup-B设置90%的CPU时间,cgroup-A继续将配额设置为CPU时间的50%。

代码语言:javascript
复制
cgroup-A: cpu.cfs_period_us=100ms
          cpu.cfs_quota_us=50ms
cgroup-B: cpu.cfs_period_us=1000ms
          cpu.cfs_quota_us=900ms

在这种情况下,当配额超额认购时,CFS将如何安排进程?

EN

回答 1

Unix & Linux用户

发布于 2020-01-21 10:40:50

如果每个cgroup都有一个进程正在运行,那么在CFS期间(假设两个进程都需要CPU时间),这些进程是如何调度的?

您所配置的内容意味着cpu核心/HT的50%,并不意味着整个系统的50%。

在这种情况下,当配额超额认购时,CFS将如何安排进程?

与上面一样,没有任何超额订阅,这只是意味着这两个进程可以分别使用0.5CPU和0.9CPU时间。要理解,请考虑如果您的系统中有20个cpu核心/HT。

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

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

复制
相关文章

相似问题

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