首页 > 解决方案 > 完全消除现代 Linux >=5.0 中的计时器滴答声

问题描述

我正在尝试完全消除安静机器上一组内核上的定时器中断。这些是这些内核定期处理的唯一中断。我已经isolcpu完成了它们,并用 构建了一个内核CONFIG_NO_HZ_FULL,实际上现在它们每秒只接收一次定时器中断。是否可以消除这个残留的 1Hz 定时器中断?

这个内核文档建议在某些时候偶尔需要打勾:

一些进程处理操作仍然需要偶尔的调度时钟滴答。这些操作包括计算CPU负载、维护sched average、计算CFS实体vruntime、计算avenrun和进行负载均衡。它们目前由每秒左右的调度时钟滴答来适应。即使对这些不频繁的调度时钟滴答声,正在进行的工作也将不再需要。

而这个内核补丁“删除 1 Hz 滴答代码”表明它已在更高版本的内核中被删除:

现在 1Hz 滴答已卸载到工作队列,我们​​可以安全地删除用于在本地处理它的残留代码。

我已经构建了 5.3.0 内核,希望这个残留的滴答声会被删除,但它仍然存在。

我需要设置其他引导参数吗?最新版本的内核中是否真的删除了剩余的计时器滴答声?(这个问题有一些相关信息)

标签: linuxtimerlinux-kernelreal-timeinterrupt

解决方案


不能从所有 CPU 中完全删除 1HZ 刻度,否则我们将无法保留任何统计信息。相反,它现在通过一个工作队列运行,您现在可以配置一个housekeepingCPU 来处理所有全局工作队列任务。有关详细信息,请参阅此提交

还建议使用 nohz_full 命令行参数和 cpusets 来管理隔离 cpu 集。您仍然需要让其中一个(默认启动 CPU)成为管家 CPU。


推荐阅读