我在具有如下架构的系统上使用修改后的 Linux 内核作为软实时操作系统:
CPU1 和 CPU2 各有 8 个内核。我有 4 个进程需要以最小的抖动运行,所以我应该做什么(在操作系统级别和硬件配置级别)以尽量减少硬件中断对这些进程的影响?
这就是我现在正在做的事情:
- 将进程分别绑定到 CPU2 上的 1 个核心。
- 禁用 SAS2208 控制器并将启动磁盘仅连接到 C602 PCH 上的 SATA 控制器。
看来我可以禁用 C602 PCH 上的大部分功能来减少 CPU1 上的硬件中断,我是否正确,如果我将进程隔离到 CPU2,则这是不必要的(即没有对 DIMM #1-1 到 #1 的远程内存访问) -4 并且 CPU1 和 CPU2 之间没有进程间通信)?
答案1
与任何性能调整一样,没有绝对的规则。由于其性质,您可以在具备足够资格的情况下制定一些规则,但只是少数。所以请记住这一点。您应该如何控制硬件中断实际上取决于您的工作负载的行为
对于您的问题,您还必须控制中断的发送位置。总会有某种中断发生,但你可以配置 IRQ 关联性将它们发送到 CPU1,让 CPU2 可用于数据处理。您可以使用数据包转向选项执行相同的操作。
如前所述,很难给您绝对的规则,但减少不必要的硬件中断的数量是一个好的开始,但是调整 IRQ 关联性和 TX/RX 关联性也能产生优势。同样重要的是,不要专注于特定指标而忘记监控整体应用程序性能。