LWN:the deadline scheduler and CPU idle states

关注了就能看到更多这么棒的文章哦~

The deadline scheduler and CPU idle states

By Jonathan Corbet

May 22, 2020

OSPM

原文来自:https://lwn.net/Articles/820882/

主译:DeepL

Rafael Wysocki在2020年Linux内核峰会(OSPM)的一次会议一开始就承认,deadline scheduling class与CPU idle state组合在一起,看起来有点奇怪。deadline scheduling是用在realtime环境中,在这种情况下,如果让CPU idle就会引入延迟,人们肯定会反对。但他认为,这两种技术可能真的就是可以一起配合工作的。

为什么人们要试着把deadline scheduling和CPU idle state结合起来呢?他认为,只要有任何方法能节省功耗,我们就不应该错过。另外,在某些系统上,其实完全无法避免idle state,因为没有空闲状态的话CPU会过热,CPU就可能会因为温控措施而降频。同时,这两者的组合在他看来是完全可行的。至少理论上来说,用来决定进入哪个idle state所需的所有信息都已经是现在就具备的了,scheduler知道所有task的预计执行时间和截止时间,而且它又知道CPU idle state的属性。只是它需要能正确使用这些信息。

他的想法是维护一个global latency quality-of-service request,这个QoS机制取决于系统中所有的deadline task。综合这个QoS request信息,就可以看出是不是现在是完全无法进入idle state。也就是说如果已经接纳了足够多的deadline task,会用掉所有可用的CPU时间,那么CPU显然不能空闲。但其他时候,会有一些时间可以进入idle state。他提出了两条规则来判断是否应该进入idle state:

- latency limit不可以大于任何一个task的下一个deadline同其runtime之间的差值。如果一个任务在5ms后的deadline前有2ms的工作要做,那么就不可以引入超过3ms的延迟。

- latency limit在乘以deadline task数量之后,不能超过去除所有deadline运行时间后预留的可用runtime。换句话说,系统因exit latency而导致的CPU time不能超过所有deadline task使用全部预留时间后剩余的时间。

Juri Lelli认为这个基本想法是合理的。Daniel Bristot de Oliveira则表示,虽然第一条规则有道理,但第二条规则过于悲观(pessimistic)。并非所有的wakeup都发生在idle CPU上,所以exit latency有些时候是可以省掉的。通过SCHED_FIFO realtime class,你可以知道所有任务他们自己的最大latency,但对于deadline任务来说就不一样了,无法保证它会遇到什么样的latency。deadline task其实可以接受在wakeup时候有一些延迟,只要它还能在自己的deadline时间内完成任务就好。

Wysocki说,这里还是有一些棘手的问题,CPU可能每隔一段时间就要进入C1 idle state,不管操作系统是否希望它进入。这引起了一些关于如何对这种强制发生的C1时间进行建模的讨论。Tommaso Cucinotta建议可以把它本身也设置为一个特殊的deadline task,这样scheduler的admission control policy就可以对它也起作用。Wysocki认为这是一个有趣的想法,但他还是希望在workload许可的情况下,能尽量找机会额外增加idle时间。

Lelli指出,scheduler现在为non-realtime非实时任务预留了一些时间,以确保它们至少有机会可以运行一下。也许可以做类似的事情来为idle thread预留时间?Cucinotta说,这种特殊的idle要求要在恰当的时间点来触发。Lelli说,可能也需要在不同CPU之间交流确保idle time达到满足,但Wysocki说,他现在还没有考虑更深层次的空闲状态(deeper idle state)或让整个系统idle这些更进一步的问题。

Lelli问现在是否有patch可以看看,Wysocki说他还没有做任何实际工作。这是件好事,因为他在这次讨论中了解到了一些内容,这些会影响他最终提出来的方案。

这时Wysocki已经讲完了,但谈话还在继续。Dietmar Eggemann指出,虽然deadline task的admission control是在全局范围内进行的,但deadline task的实际调度是在每个CPU上进行的(per-CPU)。他问,应该在哪个层面上来考虑idle time?Bristot说,这种划分是deadline scheduling的理论和实际实践之间的差异造成的。Cucinotta说,随时可以对系统进行分区管理来将admission-control的决定权往下移。

此后的讨论就完全进入deadline-scheduling theory讨论了,具体内容请等video recording提供出来之后大家自己看吧。

全文完

LWN文章遵循CC BY-SA 4.0许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注LWN深度文章以及开源社区的各种新近言论~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值