Nossa TI criou uma VM com 2 CPUs alocadas em vez das 4 que solicitei. O motivo é que a VM funciona melhor com 2 CPUs em vez de 4 (de acordo com eles). A lógica é que o hypervisor VM (VMWare neste caso) espera que todas as CPUs estejam disponíveis antes de ativar qualquer uma delas. Assim, demora mais para esperar por 4 CPUs do que por 2 CPUs.
Esta afirmação faz sentido?
Isso costumava ser verdade, mas não é mais exclusivamente verdade.
Eles estão se referindo ao Strict Co-Scheduling .
Agora, se o host tiver apenas 4 threads, seria tolice alocar todos eles. Se tiver dois processadores e 4 threads por processador, talvez você não queira 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 (consulte a página 12 do PDF acima).
Portanto, há cenários em que menos vCPUs podem ter um desempenho melhor do que mais, mas isso não é verdade 100% das vezes.
Tudo isso dito e feito, 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 itens como SQL Servers ou VMs de processamento em lote realmente pesadas ou um servidor de terminal com muitos usuários.
Isso depende muito do hipervisor subjacente e dos administradores que o executam, deixe-me explicar:
O que você pode aprender com isso? Sempre crie VMs com recursos mínimos e aumente conforme necessário. Sempre escale horizontalmente em vez de aumentar e você poderá executar seu aplicativo em qualquer lugar.
Devido ao bloqueio que pode ocorrer com o hipervisor, é verdade que 2 CPUs podem ser mais rápidas do que 4 CPUs.
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 é melhor se você puder aproveitá-las. No entanto, se você realmente 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 pronto da CPU.
Reduzi as vCPUs em várias de nossas VMs e observei uma melhoria na taxa de transferência na maioria. Um punhado piorou e precisou aumentar a contagem de vCPU.