Quem administra servidores sabe que diversos comandos do *nix, como o top, uptime mostram uma métrica de carga no servidor, chamado “load average”.

Como exemplo, o comando top nos mostra:

top - 15:48:52 up 58 days, 23:14,  1 user,  load average: 0.13, 0.11, 0.07
Tasks:  85 total,   1 running,  84 sleeping,   0 stopped,   0 zombie

Na primeira linha, temos as três métricas do load. Já vou adiantando e dizendo que elas se referem a uma média de 5, 10 e 15 minutos da carga do computador.

Essa métrica é importante do ponto de vista de planejamento de operações de servidores e data centers. Contudo, é difícil obter mais informações de como essas métricas são obtidas.

O Neil Gunther, um pesquisador renomado em capacity planning e autor do excelente Guerrilla Capacity Planning publicou uma série de artigos sobre o load average no TeamQuest. Pra resumir um pouco, os pontos principais (fugindo um pouco do formalismo matemático):

Intuitavamente, aprendemos que devemos nos manter longe de números altos no load average. Mas ninguém sabe direito o quão alto.

O load aproxima a curva do tamanho da fila de processos no kernel (em estado RUNNING ou RUNNABLE). Como essa fila muda muito rapidamente, o load é, na verdade, uma média móvel com atenuação exponencial. Na verdade, isso é um filtro passa-baixas, muito comuns em engenharia elétrica. Ou melhor ainda, é um sistema de primeira ordem (para os engenheiros de controle de plantão) com diferentes constantes de tempo (5, 10 e 15min).


Exemplo do Load Average

Exemplo do Load Average



Portanto, o load é um número absoluto. E não uma porcentagem de uso, ou de carga, como estamos acostumados a ver (como a ocupação do processador).

Bem, não vou ficar repetindo o artigo todo. Quem tiver curiosidade de saber mais sobre esses números mágicos, os artigos principais são:

UNIX Load Average Part 1: How It Works

UNIX Load Average Part 2: Not Your Average Average

Boa leitura!

Tags: , , , , ,