【翻译】 代理执行

请考虑订阅 LWN

订阅是 LWN.net 的生命线。 如果您喜欢这些内容并希望看到更多,您的订阅将有助于确保 LWN 继续蓬勃发展。 请访问此页面加入我们,让 LWN 继续在网络上传播。

2019年7月12日


OSPM

朱里-莱利(Juri Lelli)冒着防守的风险,在演讲一开始就说他要速战速决,因为与他去年在Linux 管道工大会上的演讲以及在 Linux 内核邮件列表上发布的第一份 RFC相比,他实际上没有任何更新。他这次会议的主要目的是想了解人们对这项工作是否还有兴趣。

代理执行可以简单地理解为一种 "更好的 "优先级继承机制,互斥体所有者可以使用(继承)阻塞在同一互斥体上的其他任务的调度上下文(属性)来运行(避免优先级倒置)。对于SCHED_DEADLINE调度策略来说,这意味着互斥体所有者可以 "在 "捐赠者(互斥体等待者)的带宽内运行,从而解决了一个长期存在的策略问题:目前允许优先级提升的任务在运行时执行之外运行,因为它们只能继承捐赠者的截止日期。

Lelli 举例说明了为什么没有任何优先级继承机制是不好的(优先级倒置),以及为什么当前的机制实际上更糟(可能导致甚至不使用相同互斥器的任务错过截止时间)。最后,他详细介绍了如何实现代理执行:分离调度和执行上下文,动态构建代理链。

他指出,代理执行的想法具有足够的通用性,有可能应用于其他几种同步机制(例如条件变量、绑定调用、yield_to 语义类型的调用),随后他向听众征求意见,并表示所有这些仍然具有现实意义。Peter Zijlstra 立即表示,这仍然是我们希望拥有的东西,尽管可能需要一段时间才能做好。Dhaval Giani 提到,控制组感知的非绑定工作队列可能会发现这种机制很有用,因为它可以让代理任务临时承担另一个任务的控制组特征,这样它就可以使用另一个任务的控制组相关信息来运行,但这个想法的可行性最终并不明确。

Zijlstra 和 Paul Turner 随后讨论了代理执行如何与 futexes 配合使用。他们还讨论了在考虑任务亲和性时可能出现的问题。目前的实现方法是将潜在的捐献者迁移到互斥任务持有者的 CPU 上(这样持有者就可以继续在同一 CPU 上运行,从而尊重其亲和性),但这对于SCHED_DEADLINE可能效果不佳,因为自由移动捐献者的带宽可能会破坏接纳控制保证;由于这个问题似乎不容易解决,因此讨论继续在线下进行。

本文索引条目
会议操作系统指导的电源管理峰会/2019


(登录后发表评论)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值