Cnbeta 02月10日
工程师提出将Linux内核的默认定时器频率提高到1000Hz的新建议
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Google工程师建议将Linux内核的默认计时器频率从250Hz提高到1000Hz,以解决当前频率可能导致的调度器决策问题。工程师认为,1000Hz的频率能够更好地适应现代系统对响应速度的需求,尤其是在Android和桌面系统等高刷新率设备上。更高的频率有助于更精确的时间片分配、更快的负载平衡和更及时的统计更新,从而提升系统性能和电源效率。虽然早期认为高频率可能增加耗电,但现代NOHZ状态和RCU_LAZY技术已能有效缓解这一问题。这一更改已提交审核和讨论。

⏱️Linux内核的默认计时器频率目前为250Hz,Google工程师认为这可能导致调度器决策出现问题,例如不精确的时间片和负载平衡延迟。

📱Android和桌面系统等常用的屏幕配置是120Hz,这意味着任务有8ms的工作时间。250Hz的频率可能使得在唤醒时做出正确决定的负担加重,并增加了有效利用系统以保持最佳性能/瓦特的难度。

💡 提升到1000Hz的频率,可以更精确地定义DVFS净空,从而避免因更新统计数据而过度提高频率,并能更好地利用较低频率来节省功耗。同时,更快的TICK能使系统响应速度更快。

🔋 尽管有人担心更高的频率可能导致更高的功率消耗,但目前的NOHZ状态和RCU_LAZY技术应该足以减轻这些担忧,从而在空闲场景中保持较长的TICK。

Google工程师 Qais Yousef 于周日发布了一个补丁,建议将 Linux 内核的默认计时器频率从 250Hz 提高到 1000Hz。这位 Google 工程师认为,当前的 Linux 内核默认频率可能会导致调度器决策出现问题,例如不精确的时间片、负载平衡延迟、统计更新延迟以及其他相关问题。 Qais Yousef 认为内核最好采用 1000Hz 的默认频率:

"Android 和桌面系统等常用的屏幕配置是 120Hz。 这为任务提供了 8ms 的工作时间。 4 毫秒是这一时间的一半,这使得在唤醒时做出非常正确的决定的负担比必要时更重。 这也增加了有效利用系统以保持最佳性能/瓦特的难度。 举例来说,我们尝试将 DVFS 净空定义为 TICK 的函数,因为它定义了更新统计数据的最坏情况。 TICK 越大,意味着如果我们想确保不影响性能,就必须过于激进地提高频率。 但如果任务没有耗尽所有片段,我们就失去了使用较低频率和节省功耗的机会。

一般来说,工作负载的截止日期越来越短,这并不是 UI 管道所独有的。

我相信 HZ_250 是默认设置,作为对电池电量设备的权衡,这些设备可能不喜欢频繁的 TICKS 可能会不必要地耗尽电池。 但据我了解,目前的 NOHZ 状态应该足以减轻这些担忧。 最近添加的 RCU_LAZY 进一步帮助在空闲场景中保持较长的 TICK。

正如 Saravana 向我指出的那样,较长的 TICK 确实间接帮助了定时器的凝聚,这意味着它可以掩盖驱动程序/任务要求频繁定时的问题,从而阻止进入更深的空闲状态(对于许多系统而言,4 毫秒是允许进入更深空闲状态的较高值)。 但也可以说这是这些驱动程序/任务的问题所在。

更快的 TICK 仍可能导致更高的功率,但不是由于 TICK 活动。 系统的响应速度更快(如预期),预计较高频率下的驻留会更高,因为它们会意外地被卡在较低频率下。 [1] 中的系列试图改进调度程序对响应速度的处理,并为用户/应用程序提供更好地满足其需求的方法,包括选择退出以获得足够的响应(在上述系列中,ramup_multiplier 为 0)"

长期以来,Linux 内核定时器频率一直是争论和不同意见的来源。 不过现在内核默认频率为 1000Hz,而不是 250Hz,这似乎是合乎逻辑的。

更改默认频率的补丁现已提交审核/讨论。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Linux内核 计时器频率 系统性能 调度器 1000Hz
相关文章