Linux

VMware下的Linux VM什麼時候需要irqbalance

  • April 24, 2019

我在 VMware Enterprise 5.5 中有一個 Linux 場。這些虛擬機(大部分)是帶有 SysVinit 而非 systemd 的 64 位 amd64 Debian Jessie 伺服器。虛擬機安裝了open-vm-tools

我對他們的乙太網磁碟控制器進行了半虛擬化。

準虛擬驅動程序是虛擬化平台不必模擬其他設備的驅動程序,例如 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)

執行 cat to/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 虛擬設備在虛擬環境中實現主機和來賓之間的高速通信。

使用itop似乎很明顯,它們被廣泛用於監控中等繁忙的啟用 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)

我很確定在具有CPU 親和力的 VM和單核 VM 中irqbalance不需要。我們手動配置 CPU 親和性的兩台伺服器確實有特殊需求,因為在一般情況下,文獻說應該做得更好。irqbalance

所以我的問題是,什麼時候需要irqbalance來通過多 CPU Linux VM 的不同 CPU 分配中斷負載?

注意:我已經查閱了一些論文,以及相關的(過時的)伺服器故障文章,他們對此並不是很清楚。我還發現一篇學術論文表達了對 Xen 的類似擔憂。vBalance:使用中斷負載平衡來提高 SMP 虛擬機的 I/O 性能

如果以下所有條件成立

  • VM 中有多個 CPU
  • 通過 VM CPU 到主機 CPU 的 1-1 映射, VM 被固定(通過主機)到特定的專用CPU(不與其他 VM 共享)
  • VM 具有對儲存/網路硬體的專用(例如通過直通)訪問權限

那麼虛擬機內的 IRQ 重新平衡仍然有意義。

在 VM 中沒有多個 CPU 時,VM 內 IRQ 重新平衡顯然毫無用處。對於其他點,事情變得棘手,因為您的虛擬機所在的“真實” CPU 可能會在其下方移動,並且虛擬機的作業系統不知道哪個虛擬中斷將由哪個真實 CPU 處理。此外,如果真正的 CPU 在多個 VM 之間共享,您實際上並不知道它正在做什麼其他工作,或者虛擬 CPU 何時開始接受服務,因此“虛擬重新平衡”實際上可能會讓事情變得更糟。 ..

PS:兩年前還不算老!有些資訊是永恆的…

PPS:VMCI 是退化的,在 ESXi 6 或更高版本上不受支持

引用自:https://unix.stackexchange.com/questions/264677