我正在了解 Linux 内核中 CFS 的实现。我的疑问是当 CFS 计算给定 epoch 中每个任务的理想时间并且任务的理想时间低于 min_granularity 时。我可以在代码中的哪个位置找到检查这个场景?
假设目标延迟为 6 毫秒 (ms),最小粒度为 0.75 毫秒(这是默认值)和两个可运行任务。其中一个(任务 0)有一个不错的 -20(权重 88761),另一个(任务 1)有一个不错的 0(权重 1024)。
任务 0 的理想时间为 5.93 ms ((88761/(88761+1024))*6),任务 1 的理想时间为 0.068 ms ((1024/(88761+1024))*6)。计算由函数 *check_preempt_tick* 在每个中断滴答中完成。
任务 1 的理想时间低于 min_granularity。如果 CFS 将 min_granularity 分配给任务 1,则目标延迟大于 6 毫秒。你知道如何在这种情况下工作 CFS 吗?
提前致谢