第 12 章 通过隔离中断和用户进程来最小化系统延迟

在响应各种事件时,需要尽量减少或消除延迟。为此,您可以将中断(IRQ)与不同专用 CPU 上的另一个进程隔离中断(IRQ)。

12.1. 中断和进程绑定

与不同 CPU 上的用户进程隔离中断(IRQ)可以最小化或消除实时环境中的延迟。

中断通常在 CPU 之间均匀共享。当 CPU 必须写入新数据和指令缓存时,这可能会延迟中断处理。这些中断延迟可能会导致与在同一 CPU 上执行的其他处理冲突。

可以将时间关键中断和进程分配给特定的 CPU(或一系列 CPU)。这样,处理此中断的代码和数据结构最有可能在处理器和指令缓存中。因此,专用进程可以尽快运行,而所有其他非关键进程在其他 CPU 上运行。这特别重要:涉及的速度接近或位于内存限制和可用的外围总线带宽。任何等待内存被放入处理器缓存时,对总处理时间和确定性的影响都会有明显影响。

在实践中,最佳性能完全特定于应用程序。例如,使用类似公司的功能调整应用程序需要完全不同的性能优化。

  • 当其中一个公司隔离了 4 个用于操作系统功能的 CPU 和中断处理时,他们就会发现最佳结果。剩余的 2 个 CPU 仅适用于应用程序处理。
  • 当另一公司将网络相关应用程序进程绑定到处理网络设备驱动程序中断的单一 CPU 中时,他们发现了最佳决定。
重要

要将进程绑定到 CPU,通常需要知道给定 CPU 或 CPU 范围的 CPU 掩码。CPU 掩码通常表示为 32 位位掩码、十进制数或十六进制数字,具体取决于您使用的命令。

表 12.1. 例子

CPU

Bitmask

十进制

十六进制

0

00000000000000000000000000000001

1

0x00000001

0, 1

00000000000000000000000000000011

3

0x00000011