VMware 下的 Linux 虚拟机何时需要“irqbalance”?

VMware 下的 Linux 虚拟机何时需要“irqbalance”?

我在 VMware Enterprise 5.5 中有一个 Linux 场。这些虚拟机(大部分)是 64 位 amd64 Debian Jessie 服务器,带有 SysVinit,而不是 systemd。 VM 有打开虚拟机工具安装。

半虚拟化他们的以太网磁盘控制器。

半虚拟驱动程序是虚拟化平台不必模拟其他设备的驱动程序,例如 Intel E1000 NIC 或 LSI Logic SAS SCSI 适配器。这些半虚拟驱动程序基本上通过放弃模拟层来消除中间人,这通常会导致性能显着提高。

可以lspci | egrep "PVSCSI|VMXNET"看出,以太网和磁盘现在已实现半虚拟化:

3:00.0 Serial Attached SCSI controller: VMware PVSCSI SCSI Controller (rev 02)
0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)

对 is进行 cat 操作/proc/interrupts很容易表明存在与它们相关的中断以及半虚拟化取决于的功能:

56:    6631557          0   PCI-MSI 1572864-edge      vmw_pvscsi
57:   72647654          0   PCI-MSI 5767168-edge      eth0-rxtx-0
58:   44570979          0   PCI-MSI 5767169-edge      eth0-rxtx-1
59:          0          0   PCI-MSI 5767170-edge      eth0-event-2
60:          1          0   PCI-MSI 129024-edge       vmw_vmci
61:          0          0   PCI-MSI 129025-edge       vmw_vmci

vmw_vmci:虚拟机通信接口。它通过 VMCI 虚拟设备实现虚拟环境中主机和来宾之间的高速通信。

使用起来似乎很明显伊拓它们经常用于监控中等繁忙的启用 SSL 的 Web 前端:

INT                NAME          RATE             MAX
 57 [   0          0   ]   142 Ints/s     (max:   264)
 58 [   0          0   ]   155 Ints/s     (max:   185)
 59 [   0          0   ]   119 Ints/s     (max:   419)
 60 [   0          0   ]   133 Ints/s     (max:   479)

我很确定irqbalance在虚拟机中不需要CPU亲和力,以及在单核虚拟机中。我们手动配置了 CPU 亲和力的两台服务器确实有特殊的需求,在一般情况下,文献说irqbalance应该做得更好。

所以我的问题是,什么时候中断平衡是否需要通过多 CPU Linux VM 的不同 CPU 分配中断负载?

注意:我已经查阅了一些论文,以及相关的(已注明日期)服务器故障帖子里,他们也不是很清楚。我还发现一篇学术论文对 Xen 表达了类似的担忧。vBalance:使用中断负载平衡提高 SMP 虚拟机的 I/O 性能

答案1

如果以下所有条件成立

  • 虚拟机中存在多个 CPU
  • 虚拟机(通过主机)固定到具体专用CPU(不与其他 VM 共享),VM CPU 与主机 CPU 进行 1-1 映射
  • 虚拟机有投入的(例如通过直通)访问存储/网络硬件

那么虚拟机内 IRQ 重新平衡仍然有意义。

如果虚拟机内没有多个 CPU,虚拟机内 IRQ 重新平衡显然没有任何作用。对于其他点,事情变得很棘手,因为虚拟机所在的“真实”CPU 可能会在其下方移动,并且虚拟机的操作系统不知道哪个虚拟中断将由哪个真实 CPU 处理。此外,如果真实的 CPU 在多个虚拟机之间共享,您实际上并不知道它正在做什么其他工作,也不知道虚拟 CPU 何时会得到服务,因此“虚拟重新平衡”实际上可能会让事情变得更糟。 ..

PS:两年前也不算老了!有些信息是永恒的...

聚苯醚:VMCI 是残留的,在 ESXi 6 或更高版本上不受支持

相关内容