Como consertar o alto uso da CPU

Esteja uma aplicação sendo executada em um servidor ou em uma máquina local, monitorar a utilização e a carga da CPU é essencial para otimizar o desempenho. Embora a utilização e a carga da CPU possam parecer semelhantes, na verdade são bem diferentes.

Este artigo explicará as diferenças entre essas duas métricas importantes, como monitorar a carga da CPU com comandos comuns, o impacto da alta carga da CPU e como controlá-la para melhorar o desempenho do sistema.

Utilização da CPU versus carga da CPU

A utilização da CPU é a porcentagem de trabalho que a CPU realiza para gerenciar tarefas. A carga da CPU, por outro lado, é uma medida de quantos processos estão sendo executados ou aguardando para serem executados pela CPU.

Comandos como uptime ou top fornecem o valor das médias de carga da CPU, ou seja, o número médio de threads usando ativamente ou solicitando o uso da CPU nos últimos 1, 5 e 15 períodos de minutos. Médias de carga altas indicam uma CPU sobrecarregada com muitos processos. Por exemplo, uma CPU com carga média de 1 está funcionando com capacidade total, enquanto uma CPU completamente ociosa tem um valor de carga de 0.

No entanto, esta métrica é dimensionada de acordo com os núcleos da CPU: quanto mais núcleos instalados no sistema, mais tarefas ele pode realizar em paralelo.

Por exemplo, para uma CPU com 4 núcleos, a média de carga acumulada será 4, pois cada núcleo pode suportar um valor de carga de 1. Neste cenário, mesmo que um dos núcleos esteja rodando a 100% da capacidade, a CPU só ser carregado com um quarto de sua carga potencial.

Agora, se a carga for maior que o número de núcleos instalados, os processos começarão a entrar na fila para usar a CPU.

Monitorando a carga da CPU

Conforme observado acima, a média da carga da CPU é calculada nos períodos anteriores de 1, 5 e 15 minutos. Mas existem outras métricas que também nos ajudam a identificar a carga da CPU, como:

  • Idle time: O tempo ocioso está inversamente relacionado à carga da CPU. Isto significa que quando o tempo ocioso aumenta, a carga da CPU diminui e vice-versa.
  • User time and system time: A hora do usuário e a hora do sistema indicam diretamente a carga da CPU. Basicamente, a soma do tempo do usuário, do sistema e do tempo ocioso é igual a 100% do tempo ou carga da CPU. Valores mais altos de tempo do usuário e do sistema indicam uma carga maior na CPU.
  • Wait or I/O wait time: O tempo de espera de I/O refere-se a instâncias em que a CPU está ociosa e aguardando a conclusão de uma I/O. Isso aumenta a carga da CPU, pois mais processos aguardam a CPU enquanto ela aguarda a conclusão da I/O.
  • Steal time: A porcentagem de tempo que uma CPU virtual espera involuntariamente por um processo de CPU enquanto o hipervisor está atendendo outra CPU virtual.

Efeitos de uma CPU altamente carregada

Geralmente, uma alta carga de CPU não afeta negativamente o desempenho do sistema, desde que não seja uma ocorrência de longo prazo. Mas executar uma CPU com 100% da capacidade por longos períodos pode ter impactos leves a graves no desempenho do sistema.

Alguns possíveis problemas estão listados abaixo:

  • O sistema pode travar ou parar de responder, causando uma reinicialização não programada.
  • Vários programas e aplicativos com uso intensivo de CPU podem levar mais tempo do que o esperado para serem iniciados ou podem não conseguir abrir ao mesmo tempo.
  • As aplicações (ou mesmo todo o sistema) podem ficar extremamente lentos e começar a atrasar.
  • Quando um sistema está funcionando em sua total capacidade, ele começa a superaquecer, o que, por sua vez, afeta seu desempenho. Para melhorar o poder de processamento de um sistema, ajuste a velocidade do ventilador da CPU. Podemos configurar a velocidade do ventilador na configuração do BIOS.

Identificação e solução de problemas de alta carga de CPU

Diferentes comandos ajudam a monitorar a carga do sistema durante diferentes períodos. Normalmente, um número menor é melhor, pois um número maior indica uma máquina sobrecarregada.

A próxima seção abordará alguns dos comandos que facilitam o monitoramento das médias de carga da CPU.

Usando o comando top

O comando top exibe as estatísticas dinâmicas de um sistema Linux em execução em tempo real. É um dos comandos mais utilizados para monitorar o desempenho do sistema. A primeira metade de output do comando top contém métricas importantes do sistema, enquanto a segunda parte exibe estatísticas sobre uma lista autoatualizável de processos que estão sendo gerenciados atualmente pelo kernel do Linux.

Executar o comando top criará um output semelhante à vista na figura abaixo:

Fig 1: Saída do comando superior Fig 1: Saída do comando superior

A primeira linha deste output exibe o tempo de atividade, o número total de usuários ativos conectados ao sistema e as médias de carga da CPU nos últimos intervalos de 1, 5 e 15 minutos.

Por exemplo, o output acima mostra as médias de carga como 0,13, 0,40 e 0,21. Conforme afirmado anteriormente, para interpretar corretamente esses números, é importante saber quantos núcleos a CPU possui. O output acima é de uma máquina de núcleo único, portanto a média de carga está dentro do limite aceitável, pois todas as médias de carga são inferiores a 1,0. Mesmo que haja um aumento na duração de 1 e 5 minutos, desde que a média de carga da duração de 15 minutos esteja dentro do limite, não deverá haver problema.

Usndo o comando uptime

O comando uptime também é útil para visualizar a média de carga do sistema. Este comando exibe a hora atual do sistema, o tempo de atividade da máquina, o número de usuários atualmente conectados ao sistema e as médias de carga dos últimos 1, 5 e 15 minutos.

A execução do comando uptime gerará um output semelhante o mostrado abaixo:

Fig 2: Saída do comando uptime Fig 2: Saída do comando uptime

O output acima é muito semelhante à primeira linha do output do comando top. As médias de carga são exibidas no mesmo formato e os valores das médias de carga são 0,53, 0,56 e 0,24. Como este é o output de uma máquina de núcleo único, as médias de carga ainda estão abaixo do limite, pois estão abaixo de 1,0. Este valor é sempre ajustado de acordo com a quantidade de núcleos do sistema.

Usando o comando ps

O comando ps é uma ferramenta flexível e amplamente utilizada para identificar os processos em execução no sistema e o número de recursos que eles estão usando para serem executados. Este comando pode mostrar diferentes outputs de acordo com várias opções.

A execução do comando ps gerará um output como a mostrada abaixo:

Fig 3: Saída do comando ps Fig 3: Saída do comando ps

Este output exibe informações básicas sobre os processos em execução, mas pode ser personalizada com opções fornecidas pelo comando ps para obter mais detalhes.

Por exemplo, podemos visualizar e classificar quais processos estão usando mais CPU executando o seguinte comando:

Isso resultará em um output como o mostrado abaixo:

ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
Fig 4: Os 10 processos que mais consomem CPU Fig 4: Os 10 processos que mais consomem CPU

O comando ps não exibe as médias de carga do sistema; em vez disso, é usado para solucionar a causa e encontrar os processos que estão causando a alta carga da CPU. Por exemplo, se um processo estiver utilizando 100% da CPU, os demais processos terão que esperar pela CPU e a carga da CPU aumentará.

Este comando também ajuda a identificar os processos que estão sendo gerados repetidamente ou que estão em estado zumbi.

Consertando uma alta carga em uma CPU

Abaixo estão algumas correções comuns para reduzir a alta carga da CPU:

  • Kill or restart processes: Muitas vezes, há apenas um ou dois processos aumentando a carga da CPU. Por exemplo, um processo pode estar em estado ininterrupto e aumentar a carga da CPU, mantendo todos os outros processos em espera. A primeira coisa a fazer quando a CPU fica sobrecarregada é identificar quaisquer processos deste tipo e encerrá-los ou reiniciá-los.
  • Update system apps and drivers: Drivers e aplicativos desatualizados também podem causar alta carga na CPU porque não conseguem executar as operações de I/O com eficiência. A melhor maneira de evitar esse problema é garantir que todo o sistema esteja atualizado.
  • Reinstall or downgrade apps: Às vezes, simplesmente reinstalar um aplicativo que estava causando uma alta carga de CPU pode resolver o problema. Caso contrário, mudar o aplicativo para uma versão anterior ou inferior pode melhorar o desempenho.
  • Reboot the system: Se nada mais funcionar e você puder pagar, reiniciar o sistema pode resolver o problema. Embora nem sempre seja possível, especialmente se o sistema for um servidor que não pode ser desligado.

Conclusão

A carga da CPU é uma métrica importante que precisa ser monitorada regularmente para garantir que o sistema esteja funcionando perfeitamente. Essa métrica geralmente é medida em médias de carga, mas existem outras medidas que indicam a quantidade de carga na CPU.

Felizmente, existem vários comandos úteis que podem ajudar a identificar e monitorar a carga da CPU. Os comandos top e uptime ajudam a monitorar diretamente as médias de carga da CPU, enquanto o comando ps é usado para identificar os processos que estão causando a alta carga da CPU.

A alta carga da CPU pode ser um indicador de vários problemas e existem várias soluções comuns disponíveis para reduzir a alta carga e otimizar o desempenho da CPU.

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