Como pode existir uma média de carga de 0,00?

12

Entendo que o equilíbrio de carga é uma maneira de medir o quão ocupado a CPU está. No entanto, não entendo como uma média de carga 0.00pode existir. O kernel nem sempre roda? Isso não faz parte da carga da CPU?

NerdOfLinux
fonte
6
Note-se que na maioria dos casos, o que você vê como 0,00 é realmente 0,0001 ou assim
PlasmaHH
1
Antigamente, era a duração média da fila de execução. Em outras palavras, quantos processos estavam prontos para serem executados (e não aguardando E / S etc.). Se não houver, é 0,00. Hoje em dia, isso só é possível se você não executar uma área de trabalho gráfica, mas apenas um servidor sem GUI.
Thorbjørn Ravn Andersen
Só para concluir, acho que foi um dos BSDs que, durante algum tempo, teve um bug no kernel em que o thread inativo do kernel foi contado na média de carga, causando uma média de carga de 1,00 quando o sistema não estava fazendo nada. Isso foi corrigido rapidamente.
um CVn

Respostas:

16

A média de carga ao longo de um período é o número médio de processos que estavam competindo pela CPU durante esse período. O "kernel" não roda se não houver nada a ser feito; mais especificamente, se não há nada a ser feito, a CPU é atribuída a um encadeamento "inativo" especial que não é contado (e que pode fazer coisas como colocar a CPU é um estado em que aguarda uma interrupção).

Portanto, por exemplo, uma média de carga de 0,6 ao longo de 5 minutos geralmente significa que durante esses 5 minutos a CPU foi usada por um total de 3 minutos por alguns processos (ou pelo kernel), e por um total de 2 minutos estava ocioso. Mas, como o @UKMonkey observa, pode significar que, depois de 4 minutos e meio sem fazer nada, 6 processos competiram pela CPU nos últimos 30 segundos ...

A CPU está ociosa, não há processo que queira usá-la para executar o código, porque todos os processos aguardam a conclusão de uma operação de entrada ou saída ou estão aguardando a espera de serem acordados em um determinado momento futuro.

Os links do @ Panther fornecem discussões mais aprofundadas sobre as médias de carga.

AlexP
fonte
1
A média de carga de 0,6 por 5 minutos também pode significar que não fez nada por 4 minutos e meio - e, nos últimos 30 segundos, houve um número significativo de processos aguardando o tempo da CPU ... Não é uma indicação de quanto trabalho o A CPU fez - mas quantos processos estavam esperando para usá-lo.
UKMonkey
@UKMonkey: Perfeitamente verdadeiro ... As médias são médias e a mesma média pode ser obtida de várias maneiras. Editou a resposta para explicar que uma média moderada não significa que os picos também sejam razoáveis.
AlexP
13

Uma média de carga é uma medida de quão sobrecarregado um núcleo de CPU está em termos de número de processos que desejam usá-lo de uma só vez.

A seguir, assuma uma CPU de núcleo único (thread único):

  • 0,0

    A CPU não está fazendo nada. Se um processo começasse a usar a CPU, seria o único a usá-la.

    Uma CPU ociosa não significa que não há processos em execução. Por exemplo, os serviços em segundo plano e o kernel ainda estão em execução e ainda ocupam memória. Eles simplesmente não estão usando nenhuma CPU, porque não estão fazendo nada.

  • 1.0

    A CPU está no uso máximo, mas não há contenção entre processos para o uso da CPU. Ou seja, apenas um único processo está em execução para poder reivindicar 100% do tempo da CPU. Como alternativa, vários processos estão em execução, mas nenhum está reivindicando 100% da CPU, e seu uso combinado da CPU é de até 100%. Todos eles ainda estão rodando o mais rápido possível, mesmo que tivessem a CPU para si.

  • Maior que 1,0

    A CPU está em uso máximo e há vários processos que desejam usá-la simultaneamente, para que estejam efetivamente executando mais lentamente do que seriam capazes de executar em uma CPU ociosa. Por exemplo, uma média de carga de 3,0 indica que os processos estão sendo executados em um terço da velocidade que eles desejam executar. Uma média de carga de 50,0 indica que os processos estão sendo executados a 1/50 da velocidade que eles desejam, devido a todos os outros processos em execução. Ou seja, valores acima de 1,0 indicam que a CPU disponível está sendo expandida entre mais e mais processos.

Ter uma CPU com múltiplos núcleos não altera o significado das figuras, mas pode mudar sua interpretação. Por exemplo, se você possui uma CPU de 4 núcleos, uma carga de 1,0 ainda é equivalente a um processo usando 100% da CPU em um núcleo, mas existem outros três núcleos. Portanto, em uma CPU de 4 núcleos, o ponto de eficiência máxima é 4,0, e não 1,0 - e o ponto em que tudo está sendo executado com eficiência de 1/3 é 12,0, e não 3,0. Para aumentar a complexidade, um único processo pode ter mais de um encadeamento, reivindicando CPU própria. Portanto, um único processo pode usar 100% de todos os 4 núcleos se for multiencadeado.

Nota importante

O uso da CPU é apenas um recurso que pode limitar o desempenho de um processo. A E / S é outra e não é fatorada na carga da CPU. Um processo que utiliza uma certa quantidade de CPU não necessariamente pode usar mais em uma máquina com carregamento mais leve, pois pode atingir outros gargalos.

Qual é a melhor média de carga

Realmente depende do que você está fazendo e se prefere a capacidade de resposta, ou se a CPU trabalha o máximo possível.

Para algo que precisa ser feito o máximo possível, a carga média deve estar igual ou ligeiramente acima do número de núcleos. Qualquer coisa muito maior que isso indica que você poderia fazer mais, mais rapidamente, se separasse as tarefas em mais computadores / servidores.

Para algo que precisa ser o mais responsivo possível (reagir rapidamente), a média de carga deve ser uma margem confortável menor que o número de núcleos, como meio ou um terço, o que permite alguma variação intermitente antes que ocorram lentidão.

Para um convidado de virtualização (por exemplo, KVM), quanto menor a média de carga, melhor, porque você está realmente compartilhando a CPU com outros convidados no mesmo host.

thomasrutter
fonte
Fiquei surpresa ao ver que às vezes threads "à espera de I / O" estão incluídos na média de carga serverfault.com/a/524818/27813 que parece ...
rogerdpack
@rodgerpack Sim, Dos processos de estado sempre são incluídos na média de carga no Linux. Sim, é confuso. Sim, devemos olhar principalmente para outras métricas que não sejam a média de carga.
kubanczyk
2

Uma média de carga de 0,00 significa basicamente que o sistema está ocioso e que não há atraso, estresse ou gargalo na CPU durante o tempo medido.

Isso não significa que sua CPU está inativa, apenas significa que, se um processo deseja tempo de CPU, não há espera.

É difícil dizer mais sobre o pouco que você postou, pois pode depender de como você mediu sua carga (sistema, por usuário?) E em que período.

Para alguns detalhes e leituras interessantes, consulte

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

Pantera
fonte