Documentation/translations/zh_CN/scheduler/sched-bwc.rst

Source file repositories/reference/linux-study-clean/Documentation/translations/zh_CN/scheduler/sched-bwc.rst

File Facts

System
Linux kernel
Corpus path
Documentation/translations/zh_CN/scheduler/sched-bwc.rst
Extension
.rst
Size
10165 bytes
Lines
205
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

.. include:: ../disclaimer-zh_CN.rst

:Original: Documentation/scheduler/sched-bwc.rst

:翻译:

 司延腾 Yanteng Si <siyanteng@loongson.cn>

:校译:



============
CFS 带宽控制
============

.. note::
   本文只讨论了SCHED_NORMAL的CPU带宽控制。
   SCHED_RT的情况在Documentation/scheduler/sched-rt-group.rst中有涉及。

CFS带宽控制是一个CONFIG_FAIR_GROUP_SCHED扩展,它允许指定一个组或层次的最大CPU带宽。

一个组允许的带宽是用配额和周期指定的。在每个给定的”周期“(微秒)内,一个任务组被分配多
达“配额”微秒的CPU时间。当cgroup中的线程可运行时,该配额以时间片段的方式被分配到每个cpu
运行队列中。一旦所有的配额被分配,任何额外的配额请求将导致这些线程被限流。被限流的线程将不
能再次运行,直到下一个时期的配额得到补充。

一个组的未分配配额是全局跟踪的,在每个周期边界被刷新为cfs_quota单元。当线程消耗这个带宽时,
它以需求为基础被转移到cpu-local“筒仓”,在每次更新中转移的数量是可调整的,被描述为“片“(时
间片)。

突发特性
--------
现在这个功能借来的时间是用于防范我们对未来的低估,代价是对其他系统用户的干扰增加。所有这些都
有很好的限制。

传统的(UP-EDF)带宽控制是这样的:

  (U = \Sum u_i) <= 1

这既保证了每个最后期限的实现,也保证了系统的稳定。毕竟,如果U>1,那么每一秒钟的壁钟时间,我
们就必须运行超过一秒钟的程序时间,显然会错过我们的最后期限,但下一个最后期限会更远,永远没有
时间赶上,无边无界的失败。

突发特性观察到工作负载并不总是执行全部配额;这使得人们可以将u_i描述为一个统计分布。

例如,让u_i = {x,e}_i,其中x是p(95)和x+e p(100)(传统的WCET)。这实际上允许u更小,提
高了效率(我们可以在系统中打包更多的任务),但代价是当所有的概率都一致时,会错过最后期限。然
而,它确实保持了稳定性,因为只要我们的x高于平均水平,每一次超限都必须与低估相匹配。

也就是说,假设我们有两个任务,都指定了一个p(95)值,那么我们有一个p(95)*p(95)=90.25%的机
会,两个任务都在他们的配额内,一切都很好。同时,我们有一个p(5)p(5)=0.25%的机会,两个任务同
时超过他们的配额(保证最后期限失败)。在这两者之间有一个阈值,其中一个超过了,而另一个没有不足,
无法补偿;这取决于具体的CDFs。

同时,我们可以说,最坏的情况下的截止日期失败,将是Sum e_i;也就是说,有一个有界的迟延(在假
设x+e确实是WCET的情况下)。

使用突发时的干扰是由错过最后期限的可能性和平均WCET来评价的。测试结果表明,当有许多cgroup或
CPU未被充分利用时,干扰是有限的。更多的细节显示在:
https://lore.kernel.org/lkml/5371BD36-55AE-4F71-B9D7-B86DC32E3D2B@linux.alibaba.com/

管理
----
配额、周期和突发是在cpu子系统内通过cgroupfs管理的。

.. note::
   本节描述的cgroupfs文件只适用于cgroup v1.对于cgroup v2,请参阅Control Group v2。
   :ref:`Documentation/admin-guide/cgroup-v2.rst <cgroup-v2-cpu>`.

Annotation

Implementation Notes