Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.
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.
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.
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:
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:
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.
topO 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
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.
uptimeO 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
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.
psO 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
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
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.
Abaixo estão algumas correções comuns para reduzir a alta carga da CPU:
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.