Red Hat Training
A Red Hat training course is available for RHEL 8
11.5.3. Configuração do NUMA em uma máquina virtual
Os seguintes métodos podem ser usados para configurar as configurações de Acesso Não-Uniforme de Memória (NUMA) de uma máquina virtual (VM) em um host RHEL 8.
Pré-requisitos
O host é uma máquina compatível com NUMA. Para detectar se este é o caso, use o comando
virsh nodeinfo
e veja a linhaNUMA cell(s)
:# virsh nodeinfo CPU model: x86_64 CPU(s): 48 CPU frequency: 1200 MHz CPU socket(s): 1 Core(s) per socket: 12 Thread(s) per core: 2 NUMA cell(s): 2 Memory size: 67012964 KiB
Se o valor da linha for 2 ou maior, o host é compatível com NUMA.
Procedimento
Para facilidade de uso, você pode configurar uma configuração NUMA da VM usando utilidades e serviços automatizados. Entretanto, é mais provável que a configuração manual do NUMA produza uma melhoria significativa no desempenho.
Automatic methods
Defina a política NUMA da VM para
Preferred
. Por exemplo, para fazer isso para o testguest5 VM:# virt-xml testguest5 --edit --vcpus placement=auto # virt-xml testguest5 --edit --numatune mode=preferred
Habilitar o balanceamento automático NUMA no host:
# echo 1 > /proc/sys/kernel/numa_balancing
Use o comando
numad
para alinhar automaticamente a CPU da VM com os recursos de memória.# numad
Manual methods
Roscas de vCPU específicas de pinos para uma CPU hospedeira específica ou uma gama de CPUs. Isto também é possível em hosts e VMs não-NUMA, e é recomendado como um método seguro de melhoria do desempenho da vCPU.
Por exemplo, os seguintes comandos pino vCPU fios 0 a 5 do testguest6 VM para hospedar CPUs 1, 3, 5, 7, 9, e 11, respectivamente:
# virsh vcpupin testguest6 0 1 # virsh vcpupin testguest6 1 3 # virsh vcpupin testguest6 2 5 # virsh vcpupin testguest6 3 7 # virsh vcpupin testguest6 4 9 # virsh vcpupin testguest6 5 11
Em seguida, você pode verificar se isto foi bem sucedido:
# virsh vcpupin testguest6 VCPU CPU Affinity ---------------------- 0 1 1 3 2 5 3 7 4 9 5 11
Depois de afixar os fios do vCPU, você também pode afixar os fios do processo QEMU associados a uma VM específica para uma CPU host específica ou uma gama de CPUs. Por exemplo, os seguintes comandos fixam a rosca de processo QEMU de testguest6 para CPUs 13 e 15, e verificam se isto foi bem sucedido:
# virsh emulatorpin testguest6 13,15 # virsh emulatorpin testguest6 emulator: CPU Affinity ---------------------------------- *: 13,15
Finalmente, você também pode especificar quais nós do NUMA hospedeiro serão atribuídos especificamente a um determinado VM. Isto pode melhorar o uso da memória do host pelo vCPU da VM. Por exemplo, os comandos a seguir definem testguest6 para usar os nós de host NUMA 3 a 5, e verificar se isto foi bem sucedido:
# virsh numatune testguest6 --nodeset 3-5 # virsh numatune testguest6
Recursos adicionais
- Observe que para melhores resultados de desempenho, é recomendado o uso de todos os métodos de sintonia manual listados acima. Para um exemplo de tal configuração, veja Seção 11.5.4, “Exemplo de cenário de ajuste de desempenho da vCPU”.
-
Para ver a configuração atual do NUMA de seu sistema, você pode usar o utilitário
numastat
. Para detalhes sobre o uso denumastat
, veja Seção 11.7, “Ferramentas de monitoramento de desempenho de máquinas virtuais”. - Atualmente não é possível realizar a sintonia NUMA em hosts IBM Z. Para maiores informações, veja Como a virtualização no IBM Z difere da AMD64 e Intel 64.