![640](https://i-blog.csdnimg.cn/blog_migrate/c357d80c385913c39bb48cb0ab12f623.gif)
The future of SCHED_DEADLINE and SCHED_RT for capacity-constrained and asymmetric-capacity systems
OSPM
译者注:OSPM是刚刚结束的第三届Operating-System-Directed Power-Management summit会议。近期LWN发布了一部分会议议题的讨论。本文正是其中一篇。
Kernel已经有了一个调度策略名为SCHED_DEADLINE,专门用于每个任务都需要在给定的时间期限(deadline)之内来完成的这种实时调度场景。不过,可惜的是SCHED_DEADLINE目前对CPU能力的抽象还太简化,完全没有考虑动态变压变频(DVFS),并发多线程处理(SMT),非对称的CPU能力(例如ARM big.LITTLE),以及各种性能限制策略(例如温度过高时需要限制CPU性能)。
特别是如果要在一个有性能限制策略的系统上执行deadline tasks(需要在给定时间期限内完成的Task)的话,就非常需要理解清楚SCHED_DEADLINE具体能提供什么样的保证。在此次会议中有关于各种方案(weak, hard, or mixed guarantees)的优劣对比。会议上有很多种不同观点,大家最终也没有达成一致,会需要在今年不久之后将会召开的Linux Plumbers Conference上继续探讨。
对移动设备来说,今后因为温度控制等原因进行性能限制会更加平常,因此在这种情况下如何保证性能,会是越来越重要的话题。要提供硬实时保证基本上是不可能的,因为芯片的行为受环境影响很大(例如天气太热)。对目前方案的主要反对观点在于所保证的带宽有点过于保守了。因此SCHED_DEADLINE针对那些需要高带宽的使用场景就可能没法预留足够带宽,哪怕这个task可以允许预留带宽偶尔被占用也不行。
后来这个话题又转移到讨论“tunable granted capacity”的概念(这个概念其实永远都是受限于合理的工作条件前提下的)以及一个最大的“best-effort capacity”。这样模型就能让SCHED_DEADLINE把各个task分为两类不同的服务对象,这样就能知道哪些task会更无法忍受CPU资源减少之后导致的错过deadline。不过这种方案会让kernel里的admission-control policy更加复杂。还有一种可能的策略就是让kernel内部admission control尽量简单,但是在user space增加一些特权用户可以使用的、更加高级的admission-control policy。
此外在现代的移动平台上对SCHED_DEADLINE还有多个方面的改善。Luca Abeni提供的"Capacity awareness for SCHED_DEADLINE" RFC patch set能够对非对称CPU能力的场景下提供基本功能。还有一些需要更长周期完成的工作,例如探索是否可能让在做admission control判断的时候能根据硬件或者固件所能提供的性能指标来决策,还有引入energy-aware task在deadline scheduler里的支持。
关于realtime scheduling class (SCHED_RT),在移动设备上使用的话也有一些问题。Linux mainline代码里会缺省把RT任务放在拥有最多空闲计算能力的CPU上去执行,这个方案有些太极端,有点浪费。SCHED_RT也假设CPU的计算能力全部都是对称的,此外它还不会参考当前running或者runnable的CFS进程情况来做决策。
SCHED_RT也就跟SCHED_DEADLINE一样,需要做一些改进才能在现代移动平台上更加实用。已经合入了一个utilization clamping patch set(会包含在Linux 5.3),它可以采用per-task, per-task-group或者系统全局的performance上限限制来对各个CPU的频率进行更细粒度的决策。此外还有一些其他改进,例如让SCHED_RT能在非对称的CPU能力的系统上,根据每个CPU的计算能力来预测可以获得的性能提升,又或者让SCHED_RT也和CFS task能互相考虑,从而实现更好的调度策略。
全文完
LWN文章遵循CC BY-SA 4.0许可协议。
极度欢迎将文章分享到朋友圈热烈欢迎转载以及基于现有协议上的修改再创作~
长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~