19.4. 手动将 CPU 关联性分配给单个 IRQ
分配 CPU 关联性可让将进程和未绑定进程和线程绑定到指定的 CPU 或 CPU 范围。这可减少缓存问题。
流程
通过查看
/proc/interrupts
文件,检查每个设备使用的 IRQ。cat /proc/interrupts
# cat /proc/interrupts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 每行都显示 IRQ 编号,每个 CPU 中发生中断数,后跟 IRQ 类型和描述。
CPU0 CPU1 0: 26575949 11 IO-APIC-edge timer 1: 14 7 IO-APIC-edge i8042
CPU0 CPU1 0: 26575949 11 IO-APIC-edge timer 1: 14 7 IO-APIC-edge i8042
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 CPU 掩码写入特定 IRQ 的
smp_affinity
条目。CPU 掩码必须以十六进制数字表示。例如,以下命令指示 IRQ 编号 142 仅在 CPU 0 上运行。
echo 1 > /proc/irq/142/smp_affinity
# echo 1 > /proc/irq/142/smp_affinity
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改仅在中断发生时生效。
验证
- 执行触发指定中断的活动。
检查
/proc/interrupts
的更改。配置的 IRQ 的指定 CPU 上的中断数量会增加,且在指定关联性外的 CPU 上配置的 IRQ 的中断数量不会增加。