我理解Linux内核中CFS的实现。我怀疑的是,当CFS计算给定时期中每项任务的理想时间时,任务的理想时间低于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 ms。你知道在这种情况下如何工作CFS吗?
提前致谢