Understanding Linux CPU Load-when should you be worried?

Andre Lewis on July 28, 2019

you might be familiarized with Linux load averages already. As médias de carga são os três números mostrados com os comandos uptime e top – eles se parecem com isso:

média de carga: 0.09, 0.05, 0.,01

a maioria das pessoas tem uma ideia do que as médias de carga significam: os três números representam médias ao longo de períodos de tempo progressivamente mais longos (médias de um, cinco e quinze minutos), e que os números mais baixos são melhores. Números mais elevados representam um problema ou uma máquina sobrecarregada. Mas, qual é o limiar? O que constitui valores médios de carga “bons” e “maus”? Quando você deve se preocupar com um valor médio de carga, e quando você deve se mexer para corrigi-lo o mais rápido possível?

primeiro, um pouco de fundo sobre o que significam os valores médios da carga., Vamos começar com o caso mais simples: uma máquina com um único processador.

a analogia de tráfego

uma CPU de núcleo único é como uma única faixa de tráfego. Imagina que és um operador de Ponte … às vezes a sua ponte está tão ocupada que há carros alinhados para atravessar. Queres que as pessoas saibam como o trânsito está a mover-se na tua ponte. Uma métrica decente seria quantos carros estão esperando em um momento particular. Se não houver carros à espera, os motoristas que chegam sabem que podem atravessar imediatamente. Se os carros estão cheios, os motoristas sabem que estão com atrasos.,então, operador de ponte, que sistema de numeração vai usar? Que tal:

  • 0.00 significa que não há tráfego na ponte. Na verdade, entre as 0: 00 e a 1: 00 significa que não há reforços, e um carro que chega irá seguir em frente.
  • 1.00 significa que a ponte está exatamente na capacidade. Ainda está tudo bem, mas se o trânsito ficar um pouco mais pesado, As coisas vão abrandar.mais de 1,00 significa que há reforços. Quanto? Bem, 2.00 significa que há duas faixas no total de carros — uma pista na ponte, e uma pista vale a pena esperar. 3.,00 significa que há três faixas no total … uma faixa na ponte, e duas pistas que valem a pena esperar. Etc.

isto é basicamente a carga da CPU. “Carros”são processos que utilizam uma fatia de tempo de CPU (“atravessando a ponte”) ou em fila de espera para usar a CPU. Unix refere-se a isso como o comprimento da fila de execução: a soma do número de processos que estão atualmente em execução mais o número que estão esperando (em espera) para executar.como o operador da ponte, você gostaria que seus carros/processos nunca estivessem esperando. Então, a sua carga de CPU deve, idealmente, ficar abaixo dos 1,00., Além disso, como o operador de ponte, você ainda está ok se você obter alguns pontos temporários acima de 1,00 … mas quando você está consistentemente acima de 1,00, você precisa se preocupar.então estás a dizer que a carga ideal é 1.00?

bem, não exatamente. O problema com uma carga de 1,00 é que você não tem margem de manobra. Na prática, muitos administradores de sistemas irá desenhar uma linha de 0,70:

  • A “Necessidade de Olhar para ele” Regra de ouro: 0.70 Se a carga média é de ficar em cima de > 0.70, é hora de investigar antes que as coisas piorem.

  • a regra” corrigir isto agora”: 1, 00., Se a sua média de carga permanece acima de 1,00, encontre o problema e resolva-o agora. Caso contrário, vais acordar a meio da noite, e não vai ser divertido.

  • O “Arrgh, é 3 AM WTF?”Rule of Thumb: 5.0. Se a sua média de carga é superior a 5.00, você pode estar em sérios problemas, sua caixa está pendurada ou desacelerando caminho para baixo, e isso vai (inexplicavelmente) acontecer no pior momento possível, como no meio da noite ou quando você está apresentando em uma conferência. Não o deixes chegar lá.

e os multi-processadores? A minha carga diz 3.,00, mas as coisas estão a correr bem!tem um sistema de processador quad? Ainda é saudável com uma carga de 3 horas.

Same with CPUs: a load of 1.00 is 100% CPU utilization on a single-core box. Em uma caixa dual-core, uma carga de 2.00 é 100% de Utilização da CPU.

Multicore vs. multiprocessador

enquanto estamos no tópico, vamos falar sobre multicore vs. multiprocessador. Para fins de desempenho, uma máquina com um único processador dual-core é basicamente equivalente a uma máquina com dois processadores com um núcleo cada? Sim. Aproximadamente., Há muitas subtilezas aqui sobre a quantidade de cache, frequência de hand-offs de processo entre processadores, etc. Apesar desses pontos mais finos, para efeitos de dimensionamento do valor de carga da CPU, o número total de núcleos é o que importa, independentemente de quantos processadores físicos esses núcleos estão espalhados.

o Que nos leva a duas novas Regras de ouro:

  • O “número de núcleos = carga máxima” Regra de ouro: em um sistema multicore, a carga não deve exceder o número de núcleos disponíveis.,

  • The” cores is cores ” Rule of Thumb: How the cores are spread out over CPUs does not matter. Dois quad-núcleos = = quatro dual-núcleos = oito single-núcleos. São os oito núcleos para estes fins.

Bringing It Home

Vamos dar uma olhada nas médias de carga de saída a partir de uptime:

~ $ uptime
23:05 em até 14 dias, 6:08, 7 usuários, médias de carga: 0.65 0.42 0.36

Este é um CPU dual-core, portanto, nós temos muito headroom. Nem vou pensar nisso até que a carga fique acima de 1,7 ou mais.e aqueles três números? 0.,65 é a média no último minuto, 0,42 é a média nos últimos cinco minutos, e 0,36 é a média nos últimos 15 minutos. O que nos leva à questão: que média devo observar? Um, cinco ou 15 minutos?

para os números de que falamos (1.00 = corrigi-lo agora, etc), você deve estar olhando para as médias de cinco ou 15 minutos. Francamente, se a tua caixa subir acima de 1,0 na média de um minuto, ainda estás bem. É quando a média de 15 minutos vai para norte de 1,0 e fica lá que você precisa se encaixar., (obviamente, como aprendemos, ajustar estes números para o número de núcleos de processador que o seu sistema tem).

So # de núcleos é importante para a interpretação das médias de carga … como sei quantos núcleos tem o meu sistema?

cat /proc/cpuinfo para obter informações sobre cada processador no seu sistema. Nota: não disponível no OSX, Google for alternatives. Para obter apenas uma contagem, execute-a através de grep e contagem de palavras: grep 'model name' /proc/cpuinfo | wc -l

mais servidores? Ou código mais rápido?

adicionar servidores pode ser um band-aid para código lento., Scout APM ajuda você a encontrar e corrigir seu código ineficiente e caro. Identificamos automaticamente chamadas n+1 SQL, inchaço de memória e outros problemas relacionados com o código para que você possa gastar menos tempo de depuração e mais programação de tempo. pronto para otimizar o seu site? Inscreva-se para um julgamento gratuito.

More Reading

  • Wikipedia-A good, brief explanation of Load Average; it goes a bit deeper into the mathematics
  • Linux Journal – very well-written article, goes deeper than either this post or the wikipedia entry.,

More on Linux Performance

  • Understanding Disk I / O-when should you be worried?
  • Determining free memory on Linux

Subscreva a nossa fonte RSS ou siga-nos no Twitter para mais informações sobre o desempenho Linux.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *