Explicando o load average no Linux

A expressão load average(s), numa tradução livre, quer dizer média(s) de carga (de trabalho).
No universo UNIX/Linux, é uma expressão recorrente e, talvez, pouco compreendida

Se você usar a caixa de busca deste site, vai encontrar alguns artigos que fazem menção a load average (ou LA), além de ferramentas que lidam com estas variáveis.
O assunto pode ter alguma complexidade, mas espero conseguir facilitar sua compreensão neste artigo.
As variáveis de LAs usualmente são exibidas em trio (LALALA). 😉
A maneira mais simples de acessar estes números é através do comando uptime:


uptime

 09:04:33 up 1 day, 23:32,  1 user, 
load average: 0,72, 0,67, 0,64

Você pode também usar o comando top, para obter estes valores.

top load average
Em destaque, no topo, à direita, os valores do load average.
Clique na imagem, para ver detalhes.

Como a maioria dos meus posts, este surgiu da minha parcial ignorância sobre o assunto.
Depois de pesquisar um pouco, vim compartilhar o que aprendi com meus leitores.
Os sites pesquisados, como sempre, estão na sessão de referências, para quem quiser se aprofundar um pouco mais.

Resumidamente, trata-se da média total do número de processos em espera na lista de execução (run-queue) somado ao número de processos atualmente em execução, dentro do último período de 1, 5 e 15 minutos.

A definição, destacada acima, é bastante razoável, mas a fórmula para chegar lá é um pouco mais complicada.
Vamos entender qual o significado disto no seu sistema.
Vamos usar o resultado abaixo como exemplo:

load average: 0,72, 0,67, 0,64

Neste exemplo, vemos que o valor de 1 minuto é 0,72; 5 minutos, 0,67 e 15 minutos, 0,64.
Podemos tirar algumas conclusões disto:

  • Em média, no último minuto, havia 0,72 processos rodando ou esperando por recursos do sistema.
  • Há uma crescente demanda por recursos, aqui, uma vez que os valores aumentam (da direita para a esquerda) desde os últimos 15 minutos para o último minuto — de 0,64 para 0,72.
  • Este sistema está ocioso, embora seja necessário observar outras variáveis do sistema antes de concluir tal coisa.

Os load averages do sistema são as médias do número de processos que estão ou em estado de execução ou de ininterrupção.
Os primeiros, ou estão usando a CPU ou esperando para usá-la.
Os outros estão esperando por acesso E/S (gravar informações em disco, por exemplo).
As médias são obtidas dos 3 intervalos de tempo.

É importante mencionar que o load average não trata especificamente de número de processos em execução.
Ele trata também de processos na fila de espera para usar a CPU, ler dados no disco, enviar informações pela rede etc.
O que dá para saber é que um sistema com um load average significantemente mais alto do que o número de CPUs, está provavelmente muito ocupado ou travado em um gargalo.
Por outro lado, um sistema que tenha um LA significantemente mais baixo que o número de CPUs disponíveis, está provavelmente ok e rodando bem.
Como estão as coisas no seu sistema?

Os números são normalizados para a quantidade de CPUs no sistema.
Por isto, o valor 1 significa que um única CPU estava carregada — enquanto que em um sistema com 4 CPUs, o valor significa que este estava ocioso 75% do tempo.

Referências

https://pt.wikipedia.org/wiki/Load_average.

https://serverfault.com/questions/328260/what-is-the-closest-equivalent-of-load-average-in-windows-available-via-wmi

https://stackoverflow.com/questions/21617500/understanding-load-average-vs-cpu-usage.

http://www.teamquest.com/import/pdfs/whitepaper/ldavg1.pdf.

http://www.lifeaftercoffee.com/2006/03/13/unix-load-averages-explained/.

Como saber o load average no seu sistema

A carga média de trabalho do sistema, no Linux, pode ser encontrado em um dos muitos arquivos de log do sistema de arquivos /proc.
Especificamente, o arquivo a que me refiro é o seguinte:


cat /proc/loadavg

1.07 1.52 1.87 3/707 26057

Outra forma de obter os valores é executando o comando uptime:


uptime

 16:17:29 up 1 day,  6:45,  1 user,  load average: 0,75, 1,16, 1,64

Estes valores são usados pelo comando batch, para determinar qual a melhor hora para executar tarefas determinadas pelo administrador do sistema.
Ainda no terminal, é possível ter uma visualização destes valores (em gráficos) com o comando tload ou com o xload (GUI).
tload linuz
Na imagem, abaixo, veja um exemplo do xload:
xload
Por padrão, o xload atualiza seus valores a cada 10 segundos. Para obter uma atualização a cada 1 segundo, use a opção ‘-update’


xload -bg black -fg green -update 1

No exemplo acima, usei as opções ‘-bg black’ e ‘-fg green’ para definir o fundo da janela para negro e o primeiro plano para verde.