VCAP-DCV Design: NUMA & vNUMA
Olá pessoal. Estou estudando para o VCAP-DCV Design e, como escrever faz parte do meu processo de aprendizagem, irei escrever vários posts sobre assuntos referentes ao exame (baseado no blueprint).
Vamos lá, o assunto de hoje será sobre NUMA & vNUMA.
NUMA (Non-Uniform Memory Access) é uma arquitetura de memória de computador usado no multiprocessamento, onde basicamente vincula a memória diretamente a um processador fazendo com que o mesmo tenha acesso a memória local. Utilizar o acesso local a memória é mais eficiente em comparação ao acesso a memória de outro processador ou a memória compartilhada entre os processadores.
Enquanto no NUMA estamos falando de processador e memória do servidor físico, obviamente no vNUMA estamos falando do mundo virtual. O vNUMA nada mais é que o VMware vSphere utilizando a arquitetura NUMA existente do hardware físico.
Para facilitar o entendimento vou exemplificar. Na imagem abaixo possuímos o total de 2 processadores físicos, 8 núcleos e 64 GB de memória RAM. Cada processador com os seus 4 núcleos e 32 GB de RAM formam um nó NUMA.
Conseguiremos obter um uso mais eficiente se garantirmos que a maquina virtual caiba dentro do tamanho do nó NUMA, ou seja, se uma VM com a configuração inferior a 32 GB de RAM e 4 vCPU for criada, o sistema operacional fará uso de um único nó NUMA e terá o acesso a memória localmente. Porém, se por algum motivo esta mesma VM tiver um upgrade de memória ou vCPU (ficando superior ao tamanho do nó NUMA), então outro nó NUMA será criado e o acesso não será mais apenas localmente. Neste caso mesmo tendo mais recursos de hardware esta VM poderá ter desempenho inferior ao da configuração anterior.
Bom, agora que entendemos o funcionamento do NUMA e vNUMA, vamos revisar alguns detalhes e cuidados sobre a utilização disso em ambientes VMware vSphere.
- É necessário garantir que o NUMA esteja habilitado na BIOS do servidor físico;
- O vNUMA requer que a VM esteja configurada com hardware virtual na versão 8 ou superior e no ESXi 5.x ou superior;
- O vNUMA é automaticamente desabilitado na VM quando o CPU hotplug está habilitado (KB 2040375);
- O vNUMA é automaticamente habilitado quando a VM possui mais de 8 vCPUs;
- Para utilizar o vNUMA em VMs com 8 ou menos vCPUs é necessário habilitar manualmente nos parâmetros avançados da VM;
- O vNUMA é baseado no hardware físico, por isso é importante garantir hardwares idênticos no cluster (um vMotion para um hardware diferente pode complicar as coisas);
- A partir do vSphere 6.5 a alteração dos valores de sockets e núcleos não influenciam mais o vNUMA. A configuração de sockets e núcleos por socket alteram apenas a forma como os processadores virtuais são apresentados para o SO da VM (geralmente necessário para licenciamento – pág 7).
Agradeço ao meu amigo e mentor Jackson Braga pelas boas conversas e detalhes sobre este tema.
É isso aí pessoal, até a próxima! : )
6 thoughts on “VCAP-DCV Design: NUMA & vNUMA”
Obrigado Ricardo,
acabei de sanar minhas duvidas sobre NUMA na questão de uniformizar os hosts do cluster, etc…
Agora ficou uma, o vNUMA é memory aware ou apenas Socket/core?
nesse cenário é considarado wide VM se por exemplo configurarmos uma VM com 40 GB RAM e 1 socket com 4 cores “esta configuração não é recomendável”?
Teriamos que usar a configuração 2:2 e e 40 GB para melhor desempenho ?
Olá Manuel. A partir da versão 6.5 a alteração dos valores de sockets e cores não influenciam mais o vNUMA, ou seja, se você possuir 1 socket com 4 cores ou 2 sockets com 2 cores alteram apenas a forma como os processadores virtuais são apresentados para o SO da VM e isso geralmente surte algum efeito apenas a nível de licenciamento (Windows ou SQL Server, por exemplo). Para mais detalhes recomendo a leitura deste documento https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/performance/whats-new-vsphere65-perf.pdf (pag 7). Valeu!
ok ok, thank you!!
Olá Ricardo! Excelente POST!
Obrigado por compartilhar!
Obrigado, Antonio 🙂
Estava tentando entender o funcionamento do vNUMA pois estou com um alerta no Mongo.
Excelente explicação, Ricardo! Muito obrigado.