【问题标题】:Interrupt latency in LinuxLinux 中的中断延迟
【发布时间】:2016-08-26 03:18:47
【问题描述】:
【问题讨论】:
标签:
linux
performance
time
kernel
【解决方案1】:
中断延迟是衡量处理来自设备的单个中断所需的时间。它由多个组件组成,主要是:
- 硬件延迟 - 中断信号从中断源通过中断控制器传播到 CPU 流水线所需的时间
- 中断处理开销 - 保存当前执行状态、确定中断源并调用适当的处理程序
- 由操作系统屏蔽或禁用中断或运行更高优先级的中断(阻止中断处理程序运行或在运行时中断它)导致的额外延迟
最后一个尤其是变化很大,因此中断延迟的度量通常包括最小值、典型值和最大值。
上面给出的中断延迟的主要组成部分不受中断处理程序运行频率的影响,但可能会有一些影响:
- 中断处理程序运行得越近,处理程序所需的代码和数据就越有可能仍在 CPU 的缓存中。
- 频繁执行的中断处理程序会延迟其他中断处理程序会影响其他处理程序看到的典型延迟
引用的LDD章节中使用的实时时钟的具体例子可能相关:
- 在较旧的 Linux 内核版本上,周期性中断处理程序在禁用中断的情况下运行,从而防止处理程序本身被中断,而大多数其他中断处理程序在启用中断的情况下运行
- 在根据中断控制器的输入分配中断优先级的系统上,实时时钟中断是硬连线的这一事实可能会影响其优先级
但是,当我阅读它时,问题所指的 LDD 章节只是使用“实时时钟”滴答作为中断源的示例。所以一般来说 CONFIG_HZ 值不会影响中断延迟,尽管如果你要测量它,可能会有一些(可能很小)的影响。