O que é CPU steal (roubo de CPU)?

CPU steal, também conhecido como roubo de CPU, é a porcentagem de tempo que uma CPU virtual em um servidor em nuvem espera involuntariamente em uma CPU física pelo seu tempo de processamento.

Num ambiente de nuvem, um hipervisor atua como uma interface entre o servidor físico e seu ambiente virtualizado. Essa camada de software é instalada no hardware físico e gerencia todas as tarefas alocando tempo de CPU para processos como máquinas virtuais (VMs), operações de rede, solicitações de E/S de armazenamento e muito mais.

O CPU steal ocorre quando os processos estão prontos para serem executados pela CPU virtual, mas estão aguardando que o hipervisor aloque uma CPU física para ele. Isso acontece porque o hipervisor está atendendo outra VM.

Tempo de CPU em ambientes virtuais

As VMs compartilham seus recursos – como RAM, disco rígido, ciclos de CPU etc. – com outras VMs no mesmo host em um ambiente virtual. Se uma VM for uma das quatro VMs idênticas com a mesma carga e tamanho em um servidor físico, a matemática simples sugere que cada VM deve receber 25% dos ciclos de CPU.

Na maioria dos casos, porém, a VM acabará consumindo mais do que os ciclos alocados. Em alguns casos raros, onde não está recebendo os ciclos de CPU atribuídos, o tempo de roubo aumentará.

Identificando e rastreando o CPU steal

É quase impossível evitar algum roubo ao executar um sistema como uma VM em um ambiente de nuvem. Isso ocorre porque a VM está compartilhando o servidor físico com outras VMs.

O roubo da VM pode ser visto executando o comando TOP no terminal Linux:

Output of top command Fig. 1: Saída do comando superior

O comando TOP apresenta o resumo do sistema junto com a lista dos processos ou threads atualmente gerenciados pelo kernel Linux.

Conforme destacado na captura de tela acima, o tempo de roubo é rotulado como st ou %st. Se o valor do tempo de roubo for 20st, isso significa que 20% do tempo total do processo é gasto aguardando a alocação de uma CPU física.

O valor máximo que st pode ter é 100,0. Este é o pior cenário, onde a CPU virtual não faz nada além de esperar que o hipervisor aloque uma CPU física. Felizmente, esta situação é muito rara.

Causas do CPU steal

Existem duas causas principais para o alto CPU steal:

  • Os processos precisam de mais do que a CPU alocada

    Quando processos com muita carga são executados em uma VM, os ciclos de CPU alocados a ela podem não ser suficientes para lidar com a carga de trabalho.

  • O servidor físico está sobrecarregado por VMs

    Nesse caso, os provedores de servidores em nuvem sobrecarregam o servidor físico com VMs, impossibilitando que a CPU física lide com os processos.

Infelizmente, é difícil descobrir em qual desses dois casos uma situação se enquadra apenas observando o tempo de roubo. Existem outros fatores a serem considerados. No entanto, se existirem VMs idênticas com cargas de trabalho semelhantes em execução em hosts diferentes, poderá ser possível descobrir em que caso a situação se enquadra.

Problemas com alto CPU steal

VMs executadas em um hipervisor com alto tempo de roubo podem causar problemas significativos, incluindo:

  • Slow I/O
  • Tempo de carregamento de página mais lento
  • Tempo de consulta de database mais lento
  • Processamento mais lento de relatórios
  • Aumento do tamanho da fila de tarefas assíncronas devido à incapacidade de processá-las rapidamente
  • Aumento do custo de infraestrutura devido ao lançamento de mais servidores para lidar com a mesma carga

É aconselhável ter tolerância zero em relação ao alto tempo de roubo em um servidor. O roubo de CPU desacelera as máquinas, fazendo com que elas parem completamente em circunstâncias extremas.

Quando se preocupar

Se o CPU steal for inferior a 10%, não há nada com que se preocupar e a aplicação deverá funcionar sem problemas. No entanto, a VM provavelmente estará funcionando mais lentamente do que o esperado se o valor do tempo de roubo for superior a 10%, ou seja, acima do valor normal por cerca de 20 a 30 minutos. Se o tempo de roubo permanecer alto, isso indica contenção de CPU, o que pode reduzir o desempenho da aplicação.

Corrigindo alto tempo de CPU steal

Conforme discutido acima, na maioria dos casos, o roubo de CPU é causado por alocação inadequada e recursos insuficientes, levando a uma CPU sobrecarregada. Agora vamos ver algumas soluções possíveis:

  • Se houver um aumento repentino no tempo de CPU steal, a primeira solução possível é encerrar manualmente a VM e reiniciá-la em outro servidor físico. No entanto, se a causa raiz for algum código lento e ineficiente na aplicação, isso será apenas uma solução temporária.
  • Em muitos casos, a venda excessiva do servidor físico é a causa raiz do tempo de CPU steal. Neste caso, os fornecedores de servidores devem limitar a quantidade de poder de processamento utilizado por cada VM.
  • Se os recursos de CPU alocados para a VM não forem suficientes para processar as solicitações, aumente-os aumentando o tempo de processamento ou os núcleos do processador.
  • Se não houver restrições financeiras, atualizar a VM é a maneira mais rápida e segura de resolver o problema na raiz.

Resumo

Ao implantar uma aplicação em um ambiente de computação virtualizado, o tempo de roubo de CPU é uma métrica crucial a ser observada, pois pode impactar a aplicação de diversas maneiras. Ao monitorar o tempo de roubo e identificar sua causa correta, você pode tomar as medidas adequadas para reduzi-lo.

Was this article helpful?
Monitore seu ambiente Linux

Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us