Estou tentando entender o tempo de roubo da CPU. Este artigo é o resultado principal:
https://scoutapm.com/blog/understanding-cpu-steal-time-when-should-you-be-worried
Para ser sincero, não entendo a analogia da bilheteria. No entanto, o conceito de tempo de CPU gasto por outras VMs convidadas no host parece fácil de entender.
O que não entendo são as duas causas possíveis:
- Você precisa de uma VM maior com mais recursos de CPU (você é o problema).
- O servidor físico está sobrecarregado e as máquinas virtuais estão competindo agressivamente por recursos (você não é o problema).
Para o ponto 1, diz ainda
Has %st (CPU Steal Time Percentage) increased on every virtual server?
This means your virtual machines are using more CPU. You need to increase
the CPU resources for your VMs.
Se a VM estiver mostrando uma grande quantidade de tempo de roubo, como minha VM pode ser o problema? Minha VM tem seus ciclos de CPU obtidos e alocados em outro lugar. Por que a culpa é da minha VM? Minha VM está roubando sua própria CPU? Alguém pode explicar?
Além disso, se uma VM estiver mostrando tempo de roubo de CPU. Isso significa que alguma outra VM estaria mostrando tempo de roubo de CPU negativo porque está roubando a CPU de outras VMs?
O tempo de roubo é a porcentagem de tempo que o processo da máquina virtual fica (involuntário) aguardando na CPU física por seu tempo de CPU. Isso significa que não há tempo de roubo negativo, o alcance começa em0 %e o máximo é100 %
Uma VM que não mostra tempo de roubo simplesmente obtém todos os recursos de CPU necessários quando os solicita. Essa VM não recebe mais "mais do que sua parte (justa)" , não mais do que é pago e não está "roubando seus ciclos de CPU", ela simplesmente não perde tempo esperando antes de receber o tempo de CPU alocado. precisa.
Mas você pode ser ao mesmo tempo a “vítima” e também parte do problema.
Como regra geral, o tempo de roubo não pode ocorrer sem que um provedor use o provisionamento excessivo de CPU e venda mais vCPUs aos clientes do que o hipervisor possui núcleos de CPU reais.
O conceito central é que, ao misturar as diferentes cargas de trabalho de diferentes clientes em uma plataforma de provedores, os provedores também (esperam) implicitamente garantir que as demandas de pico de um cliente coincidirão com requisitos mais baixos de recursos de outro cliente naquele momento. E embora os altos e baixos não sejam completamente compensados, todos recebem a sua parte justa e a maioria, se não todos, os recursos quando precisam deles e todos permanecem mais ou menos felizes.
Como cliente, você se beneficia porque isso geralmente se traduz em preços muito mais baixos do que pagar por recursos garantidos.
Mas isso só funciona quando sua carga de trabalho não exige recursos garantidos e contínuos . Suas cargas de trabalho equilibram melhor os picos de carga com períodos mais longos em que o sistema fica praticamente ocioso . (E o mesmo se aplica às cargas de trabalho de outros clientes.)
Quando sua VM está subdimensionada ou sobrecarregada e a utilização de vCPU permanece próxima ou em 100% por períodos mais longos, o equilíbrio pode ficar distorcido e sua VM não compensa suas demandas de CPU com tempo ocioso suficiente (nos momentos em que outros clientes têm seus cargas de pico) para garantir um equilíbrio uniforme e justo. Seu sistema, portanto, contribui e é parte do problema do aumento da contenção de recursos e seu sistema também verá mais tempo de roubo.
Quando você aumenta o tamanho da sua VM, haverá mais vezes que seu sistema ficará parcialmente ocioso e menos vezes que ele precisará de todos os recursos atribuídos e haverá uma chance menor de que ele terá que gastar em espera involuntária.