不同的 cpu.cfs_period_us 值有什么区别?

不同的 cpu.cfs_period_us 值有什么区别?

cpu.cfs_period_us我正在阅读 kernel[1] 文档,并对这部分内容感到困惑:

3. Limit a group to 20% of 1 CPU.

    With 50ms period, 10ms quota will be equivalent to 20% of 1 CPU.

    # echo 10000 > cpu.cfs_quota_us /* quota = 10ms */
    # echo 50000 > cpu.cfs_period_us /* period = 50ms */

    By using a small period here we are ensuring a consistent latency
    response at the expense of burst capacity.

我不清楚如果我“使用小句号”有什么区别:

是什么意思ensuring a consistent latency response at the expense of burst capacity

[1]https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt

答案1

当一个组的 CPU 带宽消耗超过此限制[配额](在该时间段内)时,属于其层次结构的任务将受到限制,并且在下一个时间段之前不允许再次运行。

我想说的是,他们试图指出,如果您在一分钟内配置 10 秒的 CPU 时间,那么应用程序可以停止 50 秒,因为它超出了配置时间。全功率不间断运行 10 秒,无任何运行 50 秒。如果您有应用程序需要尽快进行非常密集的计算,这很好。偶尔。

另一方面,如果您将其设置得很低,例如 500us 中的 50us,那么您的应用程序将仅运行 0.05ms,然后停止并在 0.45ms 后恢复。 50us 的突发不是突发:) ...但应用程序最多停止 0.45ms。如果您有一个应用程序,它的计算量不是很大,但需要具有非常低的延迟,那么这会很好,因为应用程序被限制的时间会增加延迟。

(故意使用不成比例的数字)

相关内容