增加 Linux 计时器频率将带来性能和优化方面的好处

在某些时候我们 我们敢和州长们玩 在我们的系统中,这样做是为了获得一些性能改进或为了某些特定目的,例如工作负载、应用程序、游戏等。

这种修改, 它们通常不包含在一般分布中 这是可以理解的,因为这意味着我们团队的资源增加或减少(视情况而定)。

我提到这一点是因为最近 谷歌工程师建议修改 la 默认设置 Linux 内核定时器,将其中断率从250Hz提高到1000Hz。

这个变化 意味着任务切换频率更高 并减少任务调度程序中的时间量,这在某些场景下,效率还可以进一步提升。 目前来说,250Hz被认为是性能、延迟、功耗之间的平衡。

提出该提案的动机

支持的主要论点 这一变化是 在具有 120Hz 显示屏的设备上进行性能优化,在个人电脑和移动设备上越来越常见。在当前250Hz的设置下,时间量化不准确性约占帧时间的一半,这会影响资源分配效率。

此外,据观察 动态电压和频率调整机制 (DVFS) 倾向于采取积极的频率选择策略 以避免速度减慢。当任务已完成处理但处理器由于其时间段尚未到期而继续以更高频率运行时,这可能会导致不必要的功耗。

增长 任务切换频率 将允许:

  • 提高了动态频率管理(DVFS)的效率。
  • 更准确地分配任务调度时间。
  • 增加了更新 CPU 负载统计的频率。
  • 减少待处理任务的等待时间。
  • 反对该修正案的论点

就其本身而言, 另一位谷歌工程师表达了他的不同意见 对此, 将定时器频率保持在 250 Hz 对低功耗设备最有利,例如物联网板和移动设备。

根据他的评估, 将频率增加到 1000 Hz 可能会导致功耗增加。 例如,在 Android 设备上,在某些情况下处理器消耗会增加高达 7%。

另外, 定时器频率越高,意味着重新激活的频率越高 CPU 的。在 250 Hz 时,安排在 t+1 ms、t+2 ms、t+3 ms 和 t+4 ms 的定时器被分组为一次唤醒,而在 1000 Hz 时则会有四次单独的唤醒,这可能会增加功耗。

性能测试结果

关于此案,门户网站 Phoronix 进行了一系列测试 在搭载 AMD Ryzen 9 9950X CPU 的 PC 上评估频率变化的影响。结果好坏参半:

  • M1000 Hz 下的性能更佳:
    骆驼.cpp
    nginx的
    超级卡丁车

    内核编译时间
  • 在 250Hz 下可获得最佳性能:
    Darktable
    PostgreSQL的
    不败
    异能
    混合器
    SVT-AV1
    RawTherapee

至于 能源消耗,结果 以下:

  • 设置为 1000 Hz:
    平均功耗:144,2 W
    最低功耗:0,18 W
    最大功耗:202,13 W
  • 设置为 250 Hz:
    平均功耗:144,37 W
    最低功耗:0,07 W
    最大功耗:202 W

最后,值得一提的是,将内核定时器中断率提高到 1000 Hz 在某些用例中具有优势,特别是在需要更频繁任务切换的应用程序和具有高刷新率显示的设备上。但它在功耗方面也有缺点,特别是在低功耗设备和以能源效率为优先的环境中。

目前, 该提案仍在辩论中 在社区中,其采用将取决于对不同使用场景的影响的更深入分析。