工程师提出将Linux内核的默认定时器频率提高到1000Hz的新建议

摘要:

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

image.webp

"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,这似乎是合乎逻辑的。

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

我们在FebBox(https://www.febbox.com/cnbeta) 开通了新的频道,更好阅读体验,更及时更新提醒,欢迎前来阅览和打赏。
查看评论
created by ceallan