LWN:一个全新的完全不省电的cpuidle driver!

在2020年Linux内核峰会上,Abhishek Goel介绍了一个新的cpuidle driver,它不会改变处理器的powerstate,而是用于评估和调试cpuidle policy。此驱动允许用户创建自定义的空闲状态并调整属性,避免了同步问题和历史扭曲,对研究cpuidle governor非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

The pseudo cpuidle driver

By Jonathan Corbet

May 21, 2020

OSPM

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

主译:DeepL

cpuidle governor是用来决定CPU在没有事情需要做的时候应该进入哪个idle state,决定好了之后,cpuidle driver会将CPU实际变动到这个idle state。但是,在2020年的Linux内核峰会(OSPM)上,Abhishek Goel展示了一个新的cpuidle driver,它其实根本不会改变处理器的power state。这样的driver显然不会省电,但作为评估和调试cpuidle policy的工具,会很有价值。

Goel首先介绍说,他做这项工作,主要是跟high-latency idle state有关的一个性能问题。也就是说,更深的CPU sleep state会需要更多时间才能退出,从而让CPU恢复工作状态。一个GPU工作密集型的workload会产生许多许多中断,这些中断之间的时间间隔刚好会让cpuidle governor来选择了一些更深的idle state。随着workload的继续进行,这里导致的latency也会随着时间的推移而增加。有一个临时的解决方法,就是将这些idle state的target latency(预期会睡眠的时长)增加三到五倍,这样governor在选择是就会偏向于较浅的idle状态。这个方法可以解决这个问题,但 "并不优雅"。其他一些人会发现他们的workload行为不太正常了。

Rafael Wysocki插话说,建议使用pm_qos机制来代替,pm_qos就是为了解决这种延迟问题,他很想知道为什么它不够用。很明显,有一个问题是pm_qos会完全禁用掉那些较深的idle state,而实际上当出现很长的空闲时间时,还是应该允许进入这些较深的idle state的。Parth Shah 补充说,在 Power体系架构上,这一点更加重要,因为如果不进入这些更深的空闲状态,则几乎不会节省功耗。

Goel试图给cpuidle的核心代码提供一个debugfs接口,允许在runtime可以调整各种空闲状态的residency属性(即进出耗时等属性——译者注)。这样对于验证idle state很有用,但要把这些变化也能跟内核内部状态同步好,这是很麻烦的。改变这些属性也会导致CPU的idle history变化(distortion),从而导致各种奇怪的行为。他希望有一个更好的解决方案。

于是就引出了pseudo cpuidle driver(伪cpuidle驱动)。这是一个loadable module,允许用户创建自定义的空闲状态,并随心所欲地调整属性。这样做就避免了同步问题和history-distortion问题。该模块加载了一组参数,描述了idle state的数量,以及每个状态的target residency和exit latency参数。实际的 "idle states "实现其实是将CPU放入一个busy-wait loop,一直等到下一个唤醒事件发生,然后governor会再busy wait一小段时间来模拟exit latency消耗时间。

这种行为显然对于省电没有帮助,但它对评估特定策略对系统性能的影响很有用。可以用来调试governor行为,或者比较两个完全不同的governor的效果。他说,事实证明对CPU设计也很有用,设计者可以尝试各种idle state,看看它们的表现如何。

他总结说,未来可能还会像模拟基本的CPU状态一样来模拟core和chip级别的idle状态。他还计划在driver中加入一些tracing机制。

Wysocki指出了一个潜在问题。在真实的系统中,对硬件中断的响应会受处理器idle状态的exit latency而延迟。模拟这种延迟的唯一方法是在中断被禁用的情况下进行忙等待,但这样一来,中断(通常会唤醒系统)就会被完全错过。这种特定的硬件行为似乎无法用这种方式来模拟。话虽如此,但他同意这个driver看起来对研究cpuidle governor很有用,值得拥有。

在会议的最后,Juri Lelli问道,是否有什么性能跑分来比较这个driver与真实硬件的性能区别,Goel回答说目前还没有。

全文完

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值