VMWare ESXi 和 IRQ 平衡

VMWare ESXi 和 IRQ 平衡

VMWare ESXi 4.1

客户:Linux 内核 2.6.32 64 位(也尝试过旧版本)

在多CP​​U虚拟机中,所有中断(eth0,ata_piix)都粘在单个CPU上。在纯硬件上运行时,一切都平衡正常。

尝试了 E1000 网络驱动程序以及半虚拟化 VMXNET3。

有什么建议吗?在虚拟化环境中是否无法获得正常的 irq 亲和性?

答案1

抱歉,但这个问题毫无意义,虚拟化硬件模型就是虚拟化的。中断不是真实的,适配器不是真实的,您进行的任何“平衡”都不是真实的,为此造成的任何 vCPU 0 过载都不是真实的。如果不使用 VT-d 传递两个专用 NIC 并对其进行适当配置,就无法以稳定的方式做到这一点。

答案2

如果可能的话,您能指出一些症状吗?当它进行大量中断时,性能是否明显下降(1 个 vCPU 固定)?我不确定 VMware 的官方答案,但他们严重依赖于这样一个事实:所有类型的“魔法”都是在客户操作系统不知情的情况下发生的,所以这可能只是一种抽象。

答案3

使用 e1000 时,可以使用“echo 3 > /proc/irq/$irq/smp_affinity”(3 == 00000010 == core1)将这些中断固定到单个核心。使用 vmxnet3,无论我做什么,它都会停留在 core0。无论这里是否虚拟化,Linux 上的 CPU 负载(软中断和朋友消耗的接近 100%)都是非常真实的。

相关内容