第 19 章 通过隔离中断和用户进程来最小化系统延迟
在响应各种事件时,实时环境需要最小化或消除延迟。要做到这一点,您可以将中断(IRQ)与不同专用 CPU 上的用户进程隔离开来。
19.1. 中断和进程绑定 复制链接链接已复制到粘贴板!
将中断(IRQ)与不同专用 CPU 上的用户进程隔离,可在实时环境中最小化或消除延迟。
中断通常在 CPU 之间平均共享。当 CPU 必须编写新数据和指令缓存时,这可能会延迟中断处理。这些中断延迟可能会导致与在同一 CPU 中执行的其他处理冲突。
可以将时间关键中断和进程分配到特定的 CPU (或一系列 CPU)。这样,用于处理此中断的代码和数据结构很可能在处理器和指令缓存中。因此,专用进程可以尽快运行,所有其他非关键进程都在其他 CPU 上运行。这特别重要,其中涉及的速度接近或内存限制以及可用的外围总线带宽。任何等待内存进入处理器缓存都会对整个处理时间和确定性造成显著影响。
实际上,最佳性能完全特定于应用程序。例如,为不同公司调优具有相似功能的应用程序,需要完全不同的性能调整。
- 当公司隔离 4 个 CPU 用于操作系统功能和中断处理时,公司看到了最佳结果。剩余的 2 个 CPU 专门用于应用程序处理。
- 当公司将网络相关应用程序进程绑定到处理网络设备驱动程序中断的单一 CPU 上时,公司发现了最佳确定性。
要将进程绑定到 CPU,通常需要知道给定 CPU 或 CPU 范围的 CPU 掩码。根据您使用的命令,CPU 掩码通常以 32 位位掩码、十进制数或十六进制数字表示。
| CPU | bitmask | 十进制 | 十六进制 |
| 0 | 00000000000000000000000000000001 | 1 | 0x00000001 |
| 0, 1 | 00000000000000000000000000000011 | 3 | 0x00000011 |