为什么默认情况下未设置 CONFIG_NO_HZ

use*_*539 5 linux kernel real-time linux-kernel

在 Linux KernelCONFIG_NO_HZ中没有设置。但初步阅读表明,从性能的角度来看,设置该选项会很好。但是读了一些这样的帖子让我重新思考。

为什么CONFIG_NO_HZ默认情况下不设置或启用时为什么没有性能改进?

Liv*_*san 5

Ticks 是由硬件定时器生成的中断,并以由 CONFIG_HZ 内核配置确定的固定间隔发生,对于大多数体系结构,可以在编译内核时进行配置。滴答中断是每个 CPU 的中断。从 Linux 2.6.21 开始,可以使用 CONFIG_NO_HZ 内核配置选项来配置空闲动态滴答功能。目标是在空闲时消除滴答中断,以便能够进入更深的睡眠模式。这对笔记本电脑很重要,但也可以减少服务器机房的电费。Linux 3.10.0 引入了完整的动态滴答功能,以消除在 CPU 上运行单个任务时的滴答中断。这里的目标是通过确保线程不受干扰地运行来更好地支持高性能计算和实时用例。

你的问题的答案是 CONFIG_NO_HZ(_IDLE) 增加了进入和退出空闲状态的成本,稍微增加了让空闲 CPU 恢复工作所需的时间。在高度延迟敏感的环境中,该成本可能被认为是过高的。对于其他人来说,禁用空闲 CPU 的计时器滴答几乎肯定是正确的做法;对于电池供电的系统来说,这是双重正确的。

检查这个:http : //lwn.net/Articles/549580/


sch*_*iba 4

性能改进并不是每个人都能看到,只有 RT 内核对某些用户真正重要的用户才能看到:DSP、音频/视频处理等。因此该配置选项并不普遍有益,因此被禁用。