我想了解 Linux 中的中断延迟是否取决于内核节拍(计时器)。
中断延迟是指从产生中断到处理中断源(代码)所耗时。
我已经按照说明做了 http://www.tldp.org/LDP/tlk/dd/interrupts.html 该机制与“实时时钟”滴答有关。
因此,中断延迟取决于定时器节拍 (CONFIG_HZ) 是否正确,即更高的节拍值将导致更小的中断延迟?
最佳答案
中断延迟是衡量设备处理单个中断所需时间的指标。它由多个组件组成,主要是:
- 硬件延迟 - 中断信号从中断源通过中断 Controller 传播到 CPU 流水线所花费的时间
- 中断处理开销——保存当前执行状态,确定中断源并调用适当的处理程序
- 由于操作系统屏蔽或禁用中断或运行更高优先级的中断(阻止中断处理程序运行或在运行时中断它)导致的额外延迟
特别是最后一个可能变化很大,因此中断延迟的度量通常包括最小值、典型值和最大值。
上面给出的中断延迟的主要组成部分不受中断处理程序运行频率的影响,但是可能会有一些影响:
- 中断处理程序运行的时间越近,处理程序所需的代码和数据就越有可能仍在 CPU 的缓存中。
- 延迟其他中断处理程序的频繁执行的中断处理程序会影响其他处理程序看到的典型延迟
引用的LDD章节中使用实时时钟的具体例子可能是相关的:
- 在较旧的 Linux 内核版本上,周期性中断的处理程序在禁用中断的情况下运行,以防止处理程序自身被中断,而大多数其他中断处理程序在启用中断的情况下运行
- 在根据连接到中断 Controller 的输入分配中断优先级的系统上,实时时钟中断是硬连线的事实可能会影响其优先级
但是,正如我所读,问题所指的 LDD 章节只是简单地使用“实时时钟”节拍作为中断源的示例。因此,一般来说,CONFIG_HZ 值不会影响中断延迟,但如果您要测量它,可能会有一些(可能很小)影响。
关于linux - Linux 中的中断延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36964141/