作为正在开发中的 Linux 6.10 内核 IRQ 更改的一部分,它支持裸机硬件上的发布中断。
英特尔旗下 Linutronix 公司的托马斯-格莱克斯纳(Thomas Gleixner)解释了裸机硬件上的发布中断功能:
“发布中断是一种虚拟化功能,它允许在没有主机交互的情况下直接向客户机注入中断。VT-d 中断重映射硬件在矢量位图中设置了与中断向量相对应的位,通过虚拟化 APIC 直接向客户机注入中断,或者在客户机被排出的情况下提供主机通知中断,通知主机位图中的中断已被标记为待处理。
在裸机环境下,多个设备(如 NVME 存储设备)会高频率地引发中断,这时就可以使用这种功能。在默认模式下,这些中断是独立处理的,因此需要一个完整的中断进入/退出往返。
利用发布的中断,可将这些中断条目合并为发布中断通知的单个条目,从而避免往返开销。然后,通知中断会在基于内存的位图中解复用待处理位,并调用相应的特定设备处理程序。
根据不同的使用场景和设备利用率,已测出吞吐量提高了 10% 到 130%。
由于该功能仅适用于每个 CPU 连接多个设备队列的高端服务器,而且在中断到达时间不同的情况下会适得其反,因此该功能可通过内核命令行参数进行选择。
很好,解释得很透彻。该功能要求在构建 Linux 6.10+ 内核时使用新的 “X86_POSTED_MSI “Kconfig 选项。posted_msi “也是实际启用该功能所需的命令行参数。
更多详细信息,请参阅已发布到 Linux Git 的拉取请求。
转自 Linux 6.10 Adds Support For Posted Interrupts On Bare Metal Hardware – Phoronix