Menu Close

15.4. 中断请求概述

中断请求或 IRQ 是从硬件立即发送到处理器的信号。系统中的每个设备都会被分配一个或多个 IRQ 编号,允许它发送唯一的中断。启用中断后,接收中断请求的处理器会立即暂停当前应用程序线程执行,以处理中断请求。

由于中断中断会停止正常操作,因此高中断率可能会严重降低系统性能。通过配置中断的关联性,或者向批处理中发送多个较低优先级中断(协调多个中断),这可以减少中断所花费的时间。

中断请求具有关联的关联性属性 smp_affinity,它定义了处理中断请求的处理器。要提高应用性能,请将中断关联和进程关联分配到同一处理器,或分配到同一内核上的处理器。这允许指定的中断和应用程序线程共享缓存行。

在支持中断中断的系统上,修改中断请求的 smp_affinity 属性可设置硬件,以便决定使用特定处理器在硬件级别提供中断,而无需在内核中干预。

15.4.1. 手动平衡中断

如果您的 BIOS 导出它的 NUMA 拓扑,则 irqbalance 服务可自动为节点上对请求服务的硬件进行中断请求。

步骤

  1. 检查哪些设备对应于您要配置的中断请求。
  2. 查找平台的硬件规格。检查您系统上的芯片组是否支持分发中断。

    1. 如果这样做,您可以按照以下步骤中的内容配置中断交付。另外,检查您的芯片组用来平衡中断的算法。有些 BIOS 有一些选项来配置中断交付。
    2. 如果没有,您的芯片组总会将所有中断路由到单个静态 CPU。您无法配置使用哪些 CPU。
  3. 检查系统上使用了 Advanced Programmable Interrupt Controller(APIC)模式:

    $ journalctl --dmesg | grep APIC

    在这里,

    • 如果您的系统使用 flat 以外的模式,您可以看到一个类似于 Setting APIC routing to physical flat 的行。
    • 如果看不到这个信息,代表您的系统使用 flat 模式。

      如果您的系统使用 x2apic 模式,您可以在 引导装载程序配置 的内核命令行中添加 nox2apic 选项来禁用它。

      只有非物理平面模式(flat)支持将中断分发到多个 CPU。这个模式仅适用于最多 8 个 CPU 的系统。

  4. 计算 smp_affinity 掩码。有关如何计算 smp_affinity 掩码 的更多信息,请参阅设置 smp_affinity mask

其他资源

  • journalctl(1)taskset(1) man page