Valores estranhos na carga do sistema linux

5

Estou tentando entender a carga do sistema em um servidor linux:

$uptime 15:01:45 up 52 days, 19:48, 1 user, load average: 0.63, 1.76, 4.81

As cargas são sempre de 1 minuto < 5 minutos < 15 minutos.

Distributor ID: RedHatEnterpriseServer Release: 5.8

Capturei uptime a cada segundo por cerca de 30 minutos e sempre relatei que a média de 1 minuto foi menor que 5 minutos e 15 minutos. Da minha compreensão dos valores de carga do sistema, isso não deve ser possível. Parece que números mais altos são relatados com alguma constante adicional.

Como isso é possível e o que isso significa?

    
por Adewzen 15.12.2015 / 15:20

1 resposta

1

Acho que você pode ter entendido mal como funciona a "média de carregamento". Primeiro, não é sistema "load", é o sistema "load average" - Há uma grande diferença, pois os números são todas as médias (ou seja, abrangendo vários registros e tempo)! Também é muito importante que você saiba o número de CPUs no sistema, pois isso afetará como interpretar os números (observe os Núcleos neste dia e idade).

Observe também que você não pode usar esses números como "Uso da CPU" como você sabe do Windows etc. Eles são médias e se baseiam nos tempos de espera do processo e no uso da CPU.

Como você mesmo escreveu, os números médios de carga podem ser descritos da seguinte forma.

(Por favor, note que eu não uso > nem < como eu acho que pode ser enganoso.)

  • Durante o último minuto 1
  • Durante os últimos 5 minutos
  • Durante os últimos 15 minutos

Vamos fazer um teste no meu pequeno sistema dual cpu (core).

Eu executei o comando "stress -c 1" para o máximo de 1 cpu (core) e deixe-o funcionar por 5,10,30 minutos (o tempo de uso da CPU pode ter sido menor, portanto, o leve desvio nos números). / p>

Esta é a aparência das minhas médias de carga.

 5 MIN - load average: 1,00, 0,71, 0,37
10 MIN - load average: 1,02, 0,94, 0,59
30 MIN - load average: 1,01, 1,03, 0,98

Então, o que os números significam? Dando isto em um sistema dual cpu (core) você pode pegar o primeiro número 1,00 e isso nos diz que o sistema foi usado 50% como nós sabemos que tem duas CPUs então se o número fosse 2,00 então nós onde usamos o sistema 100%, os números decimais informam a sobrecarga de processos em espera.

  • Nos últimos 1 minuto: o computador ficou sobrecarregado em média 0% com uma CPU totalmente usada em média. Aka em termos normais de carga da CPU, onde onde usar o sistema a 50%.

E assim por diante. Vamos fazer a mesma corrida, mas com ambos os CPU's sob carga e adicionar um filho extra tentando tirar recursos. Neste cenário eu estou tentando usar mais do que o meu sistema pode manipular.

Em apenas 3min, minha carga já está gritando para mim! Agora eu não vou deixar isso funcionar por mais tempo, pois é um pequeno roteador para testar as cargas mais facilmente, então está ficando quente:)

3 MIN - load average: 2,48, 0,99, 0,74

Agora vamos pegar o número médio de 1 min de 2,48. O que isso nos diz agora? Bem, estamos usando 248% do sistema, sabemos que podemos usar duas CPUs (200%) para que o sistema seja sobrecarregado em 48%, o que significa que os processos estão em média esperando pelo tempo de uso da CPU enquanto as duas CPUs estão totalmente ocupadas. Mas se este fosse um sistema de 4 CPUs (core), então os números seriam bem legais, já que usamos o sistema 50% novamente.

Espero que tudo isso faça sentido, mas também pode haver pequenas variações entre distribuições sobre como o kernel interpreta as médias de carga, mas não como você pensa. É como o kernel analisa em que estado o processo se encontra. Como cpu_idle, cpu_waiting, io_waiting e assim por diante. Então, o NFS fs pode fazer o processo esperar no io, etc. Eu não acho que o RedHat faça nada de especial.

EDIT: Se você quiser olhar para o uso geral da CPU no sistema, você pode querer usar o comando "top". O topo também mostra as médias de carga.

    
por 22.11.2016 / 14:48