irqbalance 报错

1
2
centos 终端一直出现:
kernel:do_IRQ: 3.186 No irq handler for vector (irq -1)

这个 do_IRQ: ... No irq handler for vector (irq -1) 信息是 Linux 内核在中断处理过程中遇到的一个警告。

根据现有的信息来看,绝大多数情况下,它并不表示系统有严重的故障,通常可以安全地忽略。不过,如果消息出现得非常频繁,可能会在终端输出中造成干扰。

这个消息通常意味着什么?

从内核开发和社区讨论来看,这个警告主要由以下几种情况触发:

  • CPU 热插拔或中断迁移过程中残留的中断:当一个 CPU 核心被关闭(例如在节能或故障隔离时),它上面可能还残留着未处理的中断请求。这些中断的“处理函数”(handler)信息在迁移过程中被清除了,但中断请求本身还在。当这个核心再次被激活或尝试处理这些残留中断时,内核找不到对应的处理函数,就会打印这条警告。

  • KVM 虚拟化环境或特定硬件:在运行 KVM/QEMU 等虚拟化软件,或者在特定的服务器硬件(如 HP ProLiant 系列)上,这个错误出现得比较频繁。有观点认为这可能与某些芯片组(如 Intel 5500/5520 或 7300)有关。

  • kdump 内核启动:在系统崩溃转储(kdump)机制启动时,由于新内核没有为之前硬件设备产生的中断准备好处理函数,也可能触发此警告。

如何减少或消除这个干扰?

  1. 临时停止中断平衡服务 (最简单)
1
2
3
4
# 停止 irqbalance 服务
# 使用 systemctl (取决于 CentOS 版本)
sudo systemctl stop irqbalance
sudo systemctl disable irqbalance
  1. 尝试更新或更换内核

  2. 添加内核引导参数(如需更深入处理)

如果上述方法无效,且消息干扰确实无法忍受,可以尝试在系统引导时添加内核参数。不过,这属于更深入的排查,需要了解其潜在影响。

  • irqpoll:这个参数会让内核在中断处理时更加“积极”地轮询,可能有助于处理丢失或错乱的中断。但社区有观点认为它可能带来较大的 I/O 性能开销。

  • pci=clearmsi:如果问题与 PCI 设备的 MSI (Message Signaled Interrupts) 有关,这个较新的补丁可以尝试。它会引导过程中重置所有 PCI 设备的 MSI 状态。

添加内核参数的方法是在系统启动时编辑 GRUB 引导菜单,在 linux 行末尾追加参数。修改引导参数有一定风险,请确保你了解操作步骤或在测试环境中进行。

相关内容

william 支付宝支付宝
william 微信微信
0%