Como a média de carga é calculada neste caso?

0
load average: 20.62, 18.83, 11.31

Esta é a média de carga que estou recebendo em um processador quad core. O programa que estou executando não está ocupando apenas a CPU, mas também outros recursos.

Como posso mostrar esses números apenas com CPU?

    
por Lolika padmanbhan 25.09.2017 / 10:27

2 respostas

1

Estes 3 números não são os números das diferentes CPUs.

Estes números são valores médios dos últimos 1, 5 e 15 minutos.

A carga significa o seguinte: se houver vários processos em um sistema de CPU única, eles estarão executando aparentemente paralelos. Mas isso não é verdade. O que praticamente acontece: o kernel fornece 1/100 segundo para um processo e, em seguida, interrompe sua execução com uma interrupção. Em seguida, passa o próximo 1/100 segundo para outro processo. Às vezes, esse 1/100 pode ser 1/1000 ou até mesmo um limite de tempo em constante mudança, não importa.

Praticamente a pergunta "qual processo deve obter o próximo intervalo de 1/100 segundos?", será decidida por uma heurística complexa. É nomeado como agendamento de tarefas.

Naturalmente, processos que são bloqueados, por exemplo, eles estão esperando seus dados o que eles estão lendo do disco, estão isentos deste agendamento de tarefas.

O que a carga indica: quantos processos estão atualmente aguardando o próximo segundo / segundo 100%. Claro, é um valor médio. Isso porque você pode ver vários números em um cat / proc / loadavg.

A situação em um sistema multi-cpu é mais complexa. Existem vários processadores, cujos intervalos de tempo podem ser fornecidos para vários processos. Isso torna o agendamento de tarefas um pouco - mas não muito - complexo. Mas a situação é a mesma.

O kernel é inteligente, ele tenta compartilhar os recursos do sistema para a eficiência ideal, e está próximo disso (existem pequenas coisas de otimização, por exemplo, é melhor se um processo for executado o maior tempo possível no mesmo cpu por causa de considerações de cache, mas não importa lá). Isso porque, se tivermos carga 8, isso significa: na verdade, há oito processos aguardando o próximo intervalo de tempo. Se tivermos 8 processadores, podemos dar essas fatias de tempo aos processadores um por um e, assim, nosso sistema será usado de maneira ideal.

Se você vir um top , verá que o número dos processos em execução reais é surpreendentemente baixo: eles são os processos marcados por R . Mesmo em um sistema não muito hardcore, é geralmente abaixo de 5. Isso ocorre parcialmente porque os processos aguardando seus dados dos discos ou da rede também são suspensos (marcados com S no topo). A carga mostra apenas o uso da CPU.

As CPUs Multicore são praticamente múltiplas CPUs no mesmo chip de silício. Não há diferença dessa visão.

No caso de CPUs com hyperthread, há um efeito colateral interessante: carregar uma cpu torna seus pares hyperthreaded mais lentos. Mas isso acontece em uma camada mais profunda do que o agendamento normal de tarefas manipula, embora possa (e deva) influenciar as decisões de movimentação de processos do agendador. CPUs com Hyperthreaded não são amplamente usadas hoje em dia.

No Windows, um método diferente é usado para o cálculo da carga: no load 1.0 significa que todos dos núcleos da CPU são usados até 100% (o que seria load 4.0 no seu sistema).

    
por 25.09.2017 / 10:50
0

Sua pergunta : como a média de carga é calculada nesse caso?

Resposta : estes três dígitos são médias móveis exponencialmente amortecidas de séries temporais diferentes (1, 5 e 15 min). Este cálculo é baseado em processos colocados nas filas dos processadores, mas não na utilização real da CPU, que todos estão acostumados a ver em termos percentuais (como no Windows)

Mas acho que essa não é a resposta que você deseja ver para entender o que está acontecendo no seu sistema no momento atual.

A média de carga reflete a carga do "sistema", que considera a carga da CPU e a espera de E / S. E esse é o parâmetro mais comum do qual você precisa iniciar sua solução de problemas de desempenho. Use diferentes métricas (carregamento de disco) e ferramentas (por exemplo, iostat do pacote sysstat) para analisar o desempenho do sistema.

E a Segunda resposta à sua pergunta:

para calcular o uso da utilização da CPU

grep 'cpu ' /proc/stat | awk '{usage=100-($5*100)/($2+$3+$4+$5+$6+$7+$8)} END {print usage}'

Veja tópico e leia o artigo .

E eu recomendo usar sistemas de monitoramento (por exemplo, o Zabbix) para

    
por 25.09.2017 / 11:18