Quando o 'irqbalance' é necessário em uma VM Linux sob o VMware?

3

Eu tenho um farm Linux no VMware Enterprise 5.5. As VMs são (na maioria das vezes) servidores Debian Jessie de 64 bits amd64 com SysVinit e não systemd. As VMs têm open-vm-tools instalado.

Eu paravirtualizado seu Ethernet e disco controladores.

Paravirtual drivers are ones where the virtualization platform does not have to emulate another device, such as an Intel E1000 NIC or a LSI Logic SAS SCSI adapter. These paravirtual drivers essentially cut the middleman out by ditching the emulation layer, which usually results in significant performance increases.

Como lspci | egrep "PVSCSI|VMXNET" pode mostrar, a ethernet e os discos agora são paravirtualizados:

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

É fácil mostrar o gato para /etc/proc/interrups , pois há interrupções associadas a eles e às funcionalidades que a paravirtualização depende:

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: The Virtual Machine Communication Interface. It enables high-speed communication between host and guest in a virtual environment via the VMCI virtual device.

Parece óbvio que usando itop eles são bastante usados no monitoramento de um front-end da web moderadamente ocupado com SSL:

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)

Tenho certeza de que irqbalance não é necessário em VMs com Afinidade de CPU e em VMs de núcleo único. Os dois servidores nos quais temos afinidade de CPU configurada manualmente têm necessidades especiais, como em casos gerais, a literatura diz que irqbalance deveria fazer um trabalho melhor.

Então, minha pergunta é, quando é irqbalance necessário para distribuir a carga de interrupção através das diferentes CPUs para multi-CPU VMs Linux?

Nota: Eu já consultei alguns artigos, e um relacionado (datado) serverfault post, eles não são muito claros sobre isso. Eu também encontrei um artigo acadêmico expressando preocupações semelhantes para Xen. vBalance: usando o balanceamento de carga de interrupção para melhorar o desempenho de I / O para máquinas virtuais SMP

    
por Rui F Ribeiro 21.02.2016 / 03:54

1 resposta

3

Se todas as ações a seguir

  • Mais de uma CPU na VM
  • A VM é fixada (por meio do host) em CPUs específicas dedicadas (não compartilhadas com outras VMs) com um mapeamento 1-1 de CPUs da VM para hospedar CPUs
  • A VM tem dedicado (por exemplo, através de passagem) acesso ao armazenamento / hardware de rede

então o rebalanceamento de IRQ na VM ainda faz sentido.

Sem várias CPUs dentro da VM, o reequilíbrio de IRQ na VM obviamente não tem propósito. Para os outros pontos, as coisas ficam complicadas porque os CPUs "reais" em que sua VM está sentada podem estar se arrastando embaixo dela e o sistema operacional da VM não sabe qual das interrupções virtuais serão tratadas por quais CPUs reais. Além disso, se a CPU real estiver sendo compartilhada entre várias VMs, você não saberá realmente qual outro trabalho está fazendo ou quando a CPU virtual será acessada, de modo que o "reequilíbrio virtual" possa estar realmente piorando as coisas. ..

PS: Será apenas /proc/interrupts que você precisará ver.

PPS: Dois anos atrás, não é tão antigo! Alguma informação é atemporal ...

PPPS: VMCI é vestigial e não é compatível com o ESXi 6 ou posterior .

    
por 25.02.2016 / 07:39