Como é o consumo de CPU de uma VM em um VM Host altamente usado?

3

Sei que posso testar isso, mas não tenho tempo agora para configurar condições de teste primitivas para aprender algo que deve estar em forma documentada - e que não consigo encontrar de forma autoritativa.

Estou pensando que o% de CPU consumido em uma VM é relativo ao total de CPU alocado à VM e que os ciclos de CPU restantes no host são distribuídos para todas as VMs em execução em um host igualmente.

Assim, são fornecidas 2 VMs em um host, onde VM1 está consumindo 50% da capacidade da CPU do host e VM2 está consumindo 10% da capacidade da CPU do host. Portanto, 40% da capacidade da CPU está disponível e é dividida igualmente nas VMs em execução.

VM1 sees a Potencialidade da CPU 70% da CPU total do host ( 50% CPU real consumida + 20% -ou metade dos ciclos sobressalentes). Portanto, VM1 registra o consumo de CPU de 71.42% ( 50% real / 70% total alocado * 100 = 71.42% e 28% sem CPU.

VM2 sees a Potencialidade da CPU de 30% da CPU total do host ( 10% CPU real consumida + 20% - ou a outra metade dos ciclos sobressalentes). Portanto, VM2 registra o consumo de CPU de 33.333% e 66.666% livre.

Parar qualquer uma das VMs deve aumentar imediatamente a CPU disponível para a outra e isso deve aparecer como uma queda no consumo de CPU da outra.

Verdadeiro ou falso? Se False, o que eu não entendo?

    
por cmdematos 18.01.2013 / 21:53

2 respostas

4

Você usou algumas tags aqui e parece que está procurando uma resposta genérica. Isso pode não ser possível: o KVM e o Vmware lidam com as coisas de maneira diferente.

No ESXi, a CPU é alocada para máquinas virtuais usando dois métodos:

  • contagem do núcleo da CPU
  • Restrição em MHz brutos

Um único núcleo de CPU pode usar até a velocidade do núcleo físico , ou a restrição de MHz, o que for menor.

O ESXi registra a quantidade de MHz usada por uma VM. Se for multi-core, terá mais head-room. No entanto, o desempenho single-thread nunca excederá a velocidade de um único desempenho do núcleo físico .

Dentro da própria VM, ela verá quantos núcleos são atribuídos a ela e calculará o desempenho com base nisso.

Parece que você está se sentindo em volta do problema "como as métricas de consumo de CPU ficam quando as VMs estão com excesso de assinaturas para computação".

Para o ESXi, é assim que funciona:

Máquina host:

  • 4 núcleos, 2.9GHz cada

VM1 & 2:

  • 3 núcleos atribuídos, sem restrições de MHz

Qual é uma inscrição de 50%.

Dado que a VM1 está usando 50% dos recursos alocados, a VMware relataria isso como 4350 MHz consumidos e o monitor da CPU na VM veria 50% de uso. Para a VM2 usando 10% dos recursos atribuídos, o VMware relataria 870 MHz consumidos e a VM veria 10% de uso.

Em suma, as VMs não se notariam.

Agora, para o caso em que há um verdadeiro uso excessivo. Adicione uma terceira VM, configurada da mesma forma que as outras duas, e assuma que todas as três estão tentando usar 50% de sua alocação de CPU. Temos três VMs tentando usar 13050 MHz, mas há apenas 1160 MHz para percorrer. Como isso funciona e como se manifesta?

Mais uma vez, para o ESXi, ele fará o down-clock das VMs, de modo que elas usem menos ciclos reais de CPU. Eles realmente usarão 3800ish de MHz cada uma de suas alocações de 8700MHz e, portanto, reportarão um uso de 43%.

    
por 18.01.2013 / 22:19
0

I am thinking that the CPU% consumed on a VM is relative to the total CPU allotted to the VM and that spare CPU cycles on the host are allotted to all running VMs in a host equally.

Não, não necessariamente. A primeira parte está correta, mas os hosts VM não estúpidos podem priorizar as VMs, portanto, a distribuição pode ou não ser igual.

True or False?

Falso.

100% de cpu em uma VM é qualquer fatia que possa ser usada, pois o consumo de CPU que você vê em uma VM é medido em uma VM:

Quando a VM está desativada, há mais disponível para você. Concedido.

Mas se isso resulta em um menor uso da CPU em sua VM, ou simplesmente tarefas sendo feitas mais rapidamente (e o uso ficando em 100%) depende do seu software. Se você está ligado à CPU, você pode colocar a alocação maior para usar. Se você não for vinculado à CPU, verá uma queda quando usar menos da fatia "disponível".

    
por 18.01.2013 / 22:13