Uma VM com 2 CPUs é realmente mais rápida que uma com 4 CPUs?

Uma VM com 2 CPUs é realmente mais rápida que uma com 4 CPUs?

Nossa TI criou uma VM com 2 CPUs alocadas em vez das 4 que solicitei. O motivo é que a VM tem melhor desempenho com 2 CPUs em vez de 4 (de acordo com eles). A justificativa é que o hipervisor VM (neste caso, VMWare) espera que todas as CPUs estejam disponíveis antes de acionar qualquer uma delas. Portanto, leva mais tempo para esperar por 4 em vez de 2 CPUs.

Esta afirmação faz sentido?

Responder1

Isso costumava ser verdade, mas não é mais exclusivamente verdade.

O que eles estão se referindo éCo-agendamento estrito.

O mais importante de tudo é que, no algoritmo de co-agendamento estrito, a existência de uma vCPU atrasada faz com que toda a máquina virtual seja co-parada. No algoritmo de co-agendamento relaxado, uma vCPU líder decide se deve co-parar a si mesma com base na inclinação em relação à vCPU irmã mais lenta

Agora,seo host tem apenas 4 threads, então seria bobagem alocar todos eles.Setem dois processadores e 4 threads por processador, então vocêpodernão deseja alocar todo o conteúdo de um único processador, pois seu hipervisor deve tentar manter vCPUs no mesmo nó NUMA para tornar o acesso à memória mais rápido, e você está dificultando esse trabalho ao alocar um soquete inteiro para uma única VM (Veja a página 12 desse PDF acima).

Portanto, há cenários em que menos vCPUspodetêm um desempenho melhor do que mais, mas isso não é verdade 100% das vezes.

Tudo isso dito e feito, muito raramente aloco mais de 3 vCPUs por convidado. Todos recebem 2 por padrão, 3 se for uma carga de trabalho pesada e 4 para coisas como SQL Servers ou VMs de processamento em lote realmente pesado, ou um servidor de terminal com muitos usuários.

Responder2

Isso depende muito do hipervisor subjacente e dos administradores que o executam, deixe-me explicar:

  1. É uma má prática fornecer arbitrariamente 4 CPUs só porque você solicitou. De um modo geral, vocêpensarvocê precisa de 4; mas o monitoramento de recursos diz que você só precisa de 1.
  2. VMware ESXi, por exemplorequer o bloqueio de todas as pCPUs quando uma vCPU faz uma solicitação de recursos de CPU; portanto, neste hipervisor é ruim para o desempenho. O KVM não bloqueia como o ESXi; ele usa o agendador de kernel subjacente, mas ainda assim, a longo prazo, pode criar contenção de CPU.
  3. Se você está construindo sistemas desde o início com 4 CPUs, você não está realmente ampliando, mas aumentando (o que é uma prática ruim, especialmente em VMs). Você pode querer verificar como está arquitetando tudo em que está trabalhando, para que possa ser construído para ser dimensionado para as infraestruturas de nuvem modernas de hoje.

O que você pode aprender com isso? Sempre crie VMs com recursos mínimos e aumente conforme necessário. Sempre aumente a escala em vez de aumentar e você poderá executar seu aplicativo em qualquer lugar.

Devido ao bloqueio que pode ocorrer com o hipervisor, é realmente verdade que 2 CPUs podem ser mais rápidas que 4 CPUs.

Responder3

Sim, a afirmação faz sentido em geral. No entanto, é algo que você deve testar para sua configuração e carga de trabalho exatas. Às vezes, mais CPUs são melhores se você realmente puder aproveitá-las. No entanto, se você não tiver tanto paralelismo, uma VM configurada com menos CPUs geralmente terá um desempenho um pouco melhor, pois evita lentidão devido a pausas no estado de prontidão da CPU.

Reduzi as vCPUs em várias de nossas VMs e observei uma melhoria no rendimento da maioria. Alguns pioraram e precisaram aumentar a contagem de vCPUs.

informação relacionada