Ao configurar as definições do processador para uma nova máquina virtual, existem vários conceitos-chave a entender: como calcular o número de núcleos de processador por CPU e núcleos de CPU por soquete e como essas configurações afetam a velocidade das máquinas virtuais. Além disso, é importante entender o que garante um melhor desempenho da VM: limitar o número de processadores e ter mais núcleos de CPU ou ter mais processadores com menos núcleos?
Continue lendo para aprender sobre esses conceitos e os princípios básicos para a configuração da CPU para máquinas virtuais em hosts ESXi.
Terminologia
Vamos começar com as definições dos termos usados ao configurar as configurações da CPU para máquinas virtuais . Esses termos ajudarão a entender o princípio de funcionamento e evitar confusões sobre o número de núcleos por CPU, núcleos de CPU por soquete e o número de núcleos de CPU versus velocidade.
Soquete da CPU
A CPU Socket is a physical connector on the motherboard to which a single physical CPU is connected. A motherboard has at least one CPU socket. Server motherboards usually have multiple CPU sockets that support multiple multicore processors. CPU sockets are standardized for different processor series. Intel and AMD use different CPU sockets for their processor families.
CPU
A CPU (central processing unit, microprocessor chip, or processor) is a computer component. It is the electronic circuitry with transistors that is connected to a socket. A CPU executes instructions to perform calculations, run applications, and complete tasks.
Quando a velocidade do relógio dos processadores se aproximou da barreira térmica, os fabricantes mudaram a arquitetura dos processadores e começaram a produzir processadores com múltiplos núcleos de CPU. Para evitar confusão entre processadores físicos e processadores lógicos ou núcleos de processador, alguns fornecedores se referem a um processador físico como um soquete.
Núcleo da CPU
A CPU core is the part of a processor containing the L1 cache. The CPU core performs computational tasks independently without interacting with other cores and external components of a “big” processor that are shared among cores. Basically, a core can be considered as a small processor built into the main processor that is connected to a socket. Applications should support parallel computations to use multicore processors rationally.
Hyper-threading
Hyper-threading é uma tecnologia desenvolvida por engenheiros da Intel para trazer computação paralela a processadores que têm um núcleo de processamento. A estreia do hyper-threading foi em 2002, quando o processador Pentium 4 HT foi lançado e posicionado para computadores desktop. Um sistema operacional detecta um processador de núcleo único com hyper-threading como um processador com dois núcleos lógicos (não físicos). Da mesma forma, um processador de quatro núcleos com hyper-threading parece para um sistema operacional como um processador com 8 núcleos. Quanto mais threads são executadas em cada núcleo, mais tarefas podem ser feitas em paralelo.
Os processadores Intel modernos têm tanto vários núcleos quanto hyper-threading. O hyper-threading geralmente está habilitado por padrão e pode ser ativado ou desativado no BIOS. O simultâneo multi-threading (SMT) da AMD é o análogo do hyper-threading para processadores AMD.
vCPU
A vCPU is a virtual processor that is configured as a virtual device in the virtual hardware settings of a VM. A virtual processor can be configured to use multiple CPU cores. A vCPU is connected to a virtual socket.
Sobrecomprometimento de CPU
Sobrecomprometimento de CPU é o provisionamento de mais processadores lógicos (núcleos de CPU do host físico) para VMs do que o número total de processadores lógicos disponíveis no host físico. O sobrecomprometimento de CPU permite uma flexibilidade e eficiência aumentadas na utilização de recursos, mas pode levar a degradação de desempenho se a demanda total exceder a capacidade física da CPU disponível.
NUMA
NUMA (non-uniform memory access) é um design de memória de computador usado em computadores multiprocessadores. A ideia é fornecer memória separada para cada processador (ao contrário de UMA, onde todos os processadores acessam memória compartilhada por meio de um barramento). Ao mesmo tempo, um processador pode acessar a memória que pertence a outros processadores usando um barramento compartilhado (todos os processadores acessam toda a memória no computador). Uma CPU tem a vantagem de desempenho de acessar sua própria memória local mais rapidamente do que outra memória em um computador multiprocessador.
Essas arquiteturas básicas são misturadas em computadores multiprocessadores modernos. Os processadores são agrupados em um pacote ou nó de CPU de vários núcleos. Os processadores que pertencem ao mesmo nó compartilham o acesso aos módulos de memória, assim como na arquitetura UMA. Além disso, os processadores podem acessar a memória do nó remoto por meio de uma interconexão compartilhada. Os processadores fazem isso para a arquitetura NUMA, mas com desempenho mais lento. Este acesso à memória é realizado através da CPU que possui essa memória, em vez de diretamente.
Os nós NUMA são casais CPU/Memória que consistem em um soquete de CPU e os módulos de memória mais próximos. A NUMA geralmente é configurada no BIOS como a interleaving de nó ou configuração de memória intercalada.
Exemplo: Um host ESXi tem dois soquetes (duas CPUs) e 256 GB de RAM. Cada CPU possui 6 núcleos de processador. Este servidor contém dois nós NUMA. Cada nó NUMA possui 1 soquete de CPU (uma CPU), 6 núcleos e 128 GB de RAM.
O ESXi sempre tenta alocar memória para uma VM a partir de um nó NUMA nativo (local). Um nó local pode ser alterado automaticamente se houver alterações nas cargas de VM e nas cargas do servidor ESXi.
vNUMA
Virtual NUMA (vNUMA) é o análogo do NUMA para máquinas virtuais VMware. Um vNUMA consome recursos de hardware de mais de um nó NUMA físico para fornecer desempenho ideal. A tecnologia vNUMA expõe a topologia NUMA a um sistema operacional convidado. Como resultado, o sistema operacional convidado está ciente da topologia NUMA subjacente para o uso mais eficiente. A versão do hardware virtual de uma VM deve ser 8 ou superior para usar o vNUMA.
O manuseio do vNUMA foi significativamente melhorado no VMware vSphere 6.5, e esse recurso não é mais controlado pelo valor de núcleos de CPU por soquete na configuração da VM. Por padrão, o vNUMA está ativado para VMs que têm mais de 8 processadores lógicos (vCPUs). Você pode ativar o vNUMA manualmente para uma VM editando o arquivo de configuração VMX da VM e adicionando a linha numa.vcpu.min=X, onde X é o número de vCPUs para a máquina virtual.
Calculando o Número de Núcleos
Vamos descobrir como calcular o número de núcleos de CPU físicos, núcleos de CPU lógicos e outros parâmetros em um servidor.
- O número total de núcleos de CPU físicos em uma máquina host é calculado com a fórmula:
(O número de Soquetes do Processador) x (O número de núcleos/Processador) = O número de núcleos de processador físico
Apenas os soquetes de processador com processadores instalados devem ser considerados.
- Se a hiper-threading for suportada, calcule o número de núcleos lógicos do processador usando a fórmula:
(O número de núcleos físicos do processador) x (2 threads/núcleo físico) = o número de processadores lógicos
- Por fim, use uma fórmula única para calcular os recursos de processador disponíveis que podem ser atribuídos a VMs:
(Soquetes de CPU) x (Núcleos de CPU) x (threads)
Por exemplo, se você tem um servidor com dois processadores, cada um com 4 núcleos e suporte a hiper-threading, então o número total de processadores lógicos que podem ser atribuídos a VMs é:
2(CPUs) x 4(núcleos) x 2(HT) = 16 processadores lógicos
Um processador lógico pode ser atribuído como um processador ou um núcleo de CPU para uma VM nas configurações da VM.
Quanto às máquinas virtuais, devido às características de emulação de hardware, elas podem usar vários processadores e núcleos de CPU em sua configuração para operação. Um núcleo de CPU físico pode ser configurado como um CPU virtual ou um núcleo de CPU virtual para uma VM.
- O total de ciclos de clock disponíveis para uma VM é calculado como:
(O número de soquetes lógicos) x (A velocidade do clock da CPU)
Se você configurar uma VM para usar 2 vCPUs com 2 núcleos quando tiver um processador físico com velocidade de clock de 3,0 GHz, então a velocidade total do clock é de 2x2x3=12 GHz. Se o superdimensionamento da CPU for usado em um host ESXi, a frequência disponível para uma VM pode ser menor do que calculada se as VMs executarem tarefas intensivas de CPU.
Limitações para Núcleos de CPU por Soquete
As limitações de CPU/núcleo no vSphere 7.0 Update 1 e vSphere 8.0 são listadas abaixo.
- O número máximo de soquetes de processador virtual atribuídos a uma VM é 768. Se você quiser atribuir mais de 768 processadores virtuais, configure uma VM para usar processadores multicores.
- O número máximo de núcleos de processador que podem ser atribuídos a uma única VM é 768. Uma máquina virtual não pode usar mais núcleos de CPU do que o número de núcleos de processador lógicos em uma máquina física.
- Adição de CPU a quente. Se uma VM tiver 128 vCPUs ou menos que 128 vCPUs, então você não pode usar o recurso de adição de CPU a quente para esta VM e editar a configuração de CPU de uma VM enquanto uma VM estiver no estado em execução.
Restrições de CPU do SO . Se um sistema operacional tiver um limite no número de processadores e você atribuir mais processadores virtuais para uma VM, os processadores adicionais não são identificados e usados por um sistema operacional convidado. Limites podem ser causados pelo design técnico do SO e restrições de licenciamento do SO. Note que existem sistemas operacionais licenciados por soquete e por núcleo de CPU (por exemplo,Windows Server 2019 ). - Restrições de CPU do sistema operacional. Se um sistema operacional tiver um limite no número de processadores e você atribuir mais processadores virtuais para uma VM, os processadores adicionais não serão identificados e utilizados por um sistema operacional convidado. Os limites podem ser causados por design técnico do sistema operacional e restrições de licenciamento do sistema operacional. Observe que existem sistemas operacionais que são licenciados por soquete e por núcleo de CPU (por exemplo, Windows Server 2019).
Limites de suporte de CPU para alguns sistemas operacionais:
- Windows 10 Pro – 2 CPUs
- Windows 10 Home – 1 CPU
- Windows 10 Workstation – 4 CPUs
- Windows Server 2019 Standard/Datacenter – 64 CPUs
- Windows XP Pro x64 – 2 CPUs
- Windows 7 Pro/Ultimate/Enterprise – 2 CPUs
- Windows Server 2003 Datacenter – 64 CPUs
Você pode verificar os limites de configuração para a versão do vSphere usada em seu ambiente no site da VMware.
Recomendações de configuração
Para versões mais antigas do vSphere, recomendamos o uso de soquetes em vez de núcleos na configuração da VM. No início, você pode não ver uma diferença significativa nos soquetes de CPU ou nos núcleos de CPU na configuração da VM para o desempenho da VM. Esteja ciente de algumas características de configuração que fazem a diferença. Lembre-se de NUMA e vNUMA ao considerar a configuração de vários processadores virtuais (soquetes) para uma VM para ter um desempenho ideal.
Se o vNUMA não for configurado automaticamente, reflita a topologia NUMA do servidor físico. Aqui estão algumas recomendações para VMs no VMware vSphere 6.5 e posterior:
- Ao definir o número de processadores lógicos (vCPUs) para uma VM, prefira a configuração de núcleos por soquete. Continue até que a contagem exceda o número de núcleos de CPU em um único nó NUMA no servidor ESXi. Use a mesma lógica até exceder a quantidade de memória disponível em um único nó NUMA do seu servidor ESXi físico.
- Às vezes, o número de processadores lógicos para sua configuração de VM é maior que o número de núcleos de CPU físicos em um único nó NUMA, ou a quantidade de RAM é maior que a quantidade total de memória disponível para um único nó NUMA. Considere dividir a contagem de processadores lógicos (vCPUs) entre o número mínimo de nós NUMA para obter um desempenho ideal.
- Não defina um número ímpar de vCPUs se a contagem de CPU ou a quantidade de memória exceder o número de núcleos de CPU. O mesmo se aplica no caso de a memória exceder a quantidade de memória para um único nó NUMA em um servidor físico.
- Não crie uma VM que tenha um número de vCPUs maior que a contagem de núcleos de processador físico em seu host físico.
- Se você não puder desabilitar o vNUMA devido aos seus requisitos, não ative o recurso de Adição de vCPU em Tempo Real.
Se um sistema operacional convidado e outro software instalado em uma VM forem licenciados com base em processador, configure uma VM para usar menos processadores com mais núcleos de CPU. Por exemplo, o Windows Server 2012 R2 é licenciado por soquete, e o Windows Server 2016 é licenciado por núcleo.
Se você usar o excesso de comprometimento da CPU na configuração de suas máquinas virtuais VMware, leve em consideração os seguintes valores:
1:1 a 3:1 – Não deve haver problemas na execução das VMs
- 3:1 a 5:1 – É observada degradação de desempenho
- 6:1 – Prepare-se para problemas causados por degradação significativa de desempenho
- O excesso de comprometimento da CPU com valores normais pode ser usado em ambientes de teste e desenvolvimento sem riscos.
Configuração de VMs em Hosts ESXi
Primeiro, determine o número de processadores lógicos (Número de CPUs) do seu host físico que são necessários para uma máquina virtual funcionar adequadamente com desempenho suficiente. Em seguida, defina o número de soquetes virtuais com processadores (Número de Soquetes no Cliente vSphere) e o número de núcleos de CPU (Núcleos por Soquete) que você deve configurar para uma VM, levando em consideração as recomendações e limitações anteriores. A tabela abaixo pode ajudá-lo a selecionar a configuração necessária.
Primeiro, determine o número de processadores lógicos (Número de CPUs) do seu host físico que é necessário para uma máquina virtual para trabalhar corretamente com desempenho suficiente. Em seguida, defina o número de soquetes virtuais com processadores (Número de Soquetes no Cliente vSphere) e o número de núcleos de CPU (Núcleos por Soquete) que você deve definir para uma VM, mantendo em mente as recomendações e limitações anteriores. A tabela abaixo pode ajudá-lo a selecionar a configuração necessária.
Se você precisar atribuir mais de 8 processadores lógicos para uma VM, a lógica permanece a mesma. Para calcular o número de CPUs lógicos no Cliente vSphere, multiplique o número de soquetes pelo número de núcleos. Por exemplo, se você precisar configurar uma VM para usar 2 soquetes de processador, cada um com 2 núcleos de CPU, então o número total de CPUs lógicos é 2*2=4. Isso significa que você deve selecionar 4 CPUs nas opções de hardware virtual da VM no Cliente vSphere para aplicar essa configuração.
Configurando Núcleos por CPU no Cliente vSphere
Vamos explicar como configurar as opções de CPU para uma VM no VMware vSphere Client. Insira o endereço IP do seu vCenter Server em um navegador da web e abra o VMware vSphere Client. No navegador, abra Hosts e Agrupamentos e selecione a VM necessária que você deseja configurar. Certifique-se de que a VM esteja desligada para poder alterar a configuração de CPU. O processo de configuração é idêntico em vSphere 6.x, 7.0 e 8.0.
- Clique com o botão direito na VM e, no menu de contexto, clique em Editar Configurações para abrir as configurações da máquina virtual.
- Expanda a seção CPU na guia Hardware Virtual da janela Editar Configurações.
- CPU. Clique no menu suspenso na string CPU e selecione o número total de processadores lógicos necessários para esta VM. Neste exemplo, selecionamos 4 processadores lógicos para a VM Ubuntu (blog-Ubuntu1).
- Núcleos por Soquete. Nesta string, clique no menu suspenso e selecione o número necessário de núcleos para cada soquete virtual (processador).
- CPU Hot Plug. Se desejar utilizar esse recurso, selecione a caixa de seleção Habilitar Adição de CPU em Hot. Lembre-se das limitações e requisitos.
- Reserva. Selecione a alocação mínima garantida de velocidade do clock do CPU (frequência, MHz ou GHz) para uma máquina virtual em um host ou cluster ESXi.
- Limite. Selecione a velocidade máxima do clock do CPU para um processador VM. Essa frequência é a máxima para uma máquina virtual, mesmo que esta VM seja a única VM em execução no host ou cluster ESXi com mais recursos de processador livres. O limite definido é verdadeiro para todos os processadores virtuais de uma VM. Se uma VM possui 2 processadores de núcleo único e o limite é de 1000 MHz, então ambos os processadores virtuais trabalham com uma velocidade total de um milhão de ciclos por segundo (500 MHz para cada núcleo).
- Ações. Este parâmetro define a prioridade de consumo de recursos por máquinas virtuais (Baixo, Normal, Alto, Personalizado) em um anfitrião ESXi ou em um pool de recursos. Ao contrário dos parâmetros Reserva e Limite, o parâmetro Ações é aplicado para uma VM apenas se houver um défice de recursos de CPU dentro de um anfitrião ESXi, pool de recursos ou em um cluster DRS.
Opções disponíveis para o parâmetro Ações:
- Baixo – 500 ações por processador virtual
- Normal – 1000 ações por processador virtual
- Alto – 2000 ações por processador virtual
- Personalizado – definir um valor personalizado
Quanto maior o valor de Ações, maior a quantidade de recursos de CPU fornecida para uma VM dentro de um anfitrião ESXi ou pool de recursos.
- Virtualização de hardware. Marque esta caixa de seleção para habilitar virtualização aninhada. Esta opção é útil se você quiser executar uma VM dentro de outra VM para fins de teste ou educação.
- Contadores de desempenho. Este recurso é usado para permitir que um aplicativo instalado dentro da máquina virtual seja depurado e otimizado após a medição do desempenho da CPU.
- Afinidade de agendamento. Esta opção é usada para atribuir uma VM a um processador específico. O valor inserido pode ser como este: “0, 2, 4-7”.
- I/O MMU. This feature allows VMs to have direct access to hardware input/output devices such as storage controllers, network cards, and graphic cards (rather than using emulated or paravirtualized devices). I/O MMU is also called Intel Virtualization Technology for Directed I/O (Intel VT-d) and AMD I/O Virtualization (AMD-V). I/O MMU is disabled by default. Using this option is deprecated in vSphere 7.0. If I/O MMU is enabled for a VM, the VM cannot be migrated with vMotion and is not compatible with snapshots, memory overcommit, suspended VM state, physical NIC sharing, and NSX network virtualization.
Se você usar um host ESXi autônomo e usar o Cliente de Host VMware para configurar VMs em um navegador da web, o princípio de configuração é o mesmo do Cliente VMware vSphere.
Configurando Núcleos por CPU no VMware Workstation
Se você se conectar ao Servidor vCenter ou host ESXi no VMware Workstation e abrir as configurações da VM de uma VM vSphere, você pode editar a configuração básica de processadores virtuais.
- Clique em VM>Configurações, selecione a guia Hardware e clique em Processadores.
- Selecione o número de processadores virtuais (sockets) e o número de núcleos por processador.
Na captura de tela a seguir, você vê a configuração do processador para a mesma VM Ubuntu que foi configurada anteriormente no Cliente vSphere.
O número total de núcleos do processador (núcleos lógicos dos processadores físicos em um host ESXi ou cluster) é calculado e exibido automaticamente abaixo. Em comparação, na interface do Cliente vSphere, você define o número total de núcleos do processador (a opção CPUs), seleciona o número de núcleos por processador e, em seguida, o número de sockets virtuais é calculado e exibido.
Configurando Processadores de VM no PowerCLI
Se você prefere usar a interface de linha de comando para configurar componentes do VMware vSphere, use PowerCLI para editar a configuração de CPU das VMs. Vamos descobrir como editar a configuração de CPU de uma VM que é Ubuntu 19 no PowerCLI. Os comandos são usados para VMs que estão desligadas.
- Para configurar uma VM para usar dois processadores virtuais de núcleo único (dois soquetes virtuais são usados), use o comando:
get-VM -name Ubuntu19 | set-VM -NumCpu 2
Insira outro número se você quiser definir outro número de processadores (soquetes) para uma VM.
- No exemplo a seguir, você verá como configurar uma VM para usar dois processadores virtuais de dois núcleos (2 soquetes são usados):
$VM=Get-VM -Name Ubuntu19
$VMSpec=New-Object -Type VMware.Vim.VirtualMachineConfigSpec -Property @{ "NumCoresPerSocket" = 2}
$VM.ExtensionData.ReconfigVM_Task($VMSpec)
$VM | Set-VM -NumCPU 2
- Uma vez que uma nova configuração de CPU é aplicada à máquina virtual, essa configuração é salva no arquivo de configuração VMX da VM. No nosso caso, verificamos o arquivo Ubuntu19.vmx localizado no diretório da VM no datastore (/vmfs/volumes/datastore2/Ubuntu19/). As linhas com a nova configuração de CPU estão localizadas no final do arquivo VMX.
numvcpus = “2”
cpuid.coresPerSocket = “2”
- Se precisar reduzir o número de processadores (sockets) para uma VM, use o mesmo comando mostrado anteriormente com uma quantidade menor. Por exemplo, para definir um processador (socket) para uma VM, use este comando:
get-VM -name Ubuntu19 | set-VM -NumCpu 1
A principal vantagem do uso do PowerCLI é a capacidade de configurar várias VMs em massa. Automação de tarefas é importante e conveniente se o número de máquinas virtuais a configurar for alto. Use cmdlets VMware e sintaxe do Microsoft PowerShell para criar scripts.
Conclusão
O desempenho de aplicações em execução numa VM depende da configuração correta da CPU e da memória. No VMware vSphere 6.5 e em versões posteriores, defina mais núcleos na CPU para máquinas virtuais e utilize a abordagem de núcleos de CPU por soquete. Se estiver a utilizar versões do vSphere anteriores ao vSphere 6.5, configure o número de soquetes sem aumentar o número de núcleos de CPU para uma VM devido ao comportamento diferente do vNUMA nas versões mais recentes e mais antigas do vSphere. Leve em consideração o modelo de licenciamento do software que precisa de instalar numa VM. Se o software for licenciado por CPU, configure mais núcleos por CPU nas definições da VM.
Ao usar máquinas virtuais no VMware vSphere, não se esqueça de utilizar ferramentas de backup da VMware. Utilize o Backup & Replicação da NAKIVO para fazer backup das suas máquinas virtuais, incluindo VMs que têm vários núcleos por CPU. O backup regular ajuda a proteger os seus dados e a recuperar os dados em caso de desastre.
Source:
https://www.nakivo.com/blog/the-number-of-cores-per-cpu-in-a-virtual-machine/