Entendendo Load Average de Verdade: Guia Completo para Linux

Load Average

Vamos dissecar load average de verdade, sem mitos ou simplificações enganosas. É um conceito que muita gente confunde com “uso de CPU”, mas ele é mais sutil.


1️⃣ O que é load average

O load average é um número que representa a quantidade de processos esperando para serem executados em um dado instante, incluindo:

  • Processos ativos executando na CPU.
  • Processos bloqueados por I/O (como leitura/gravação de disco, rede, etc.).
  • Processos prontos para CPU, esperando na fila do escalonador.

No Linux, você costuma ver isso em uptime ou top, normalmente 3 números:

$ uptime
 07:30:12 up 10 days,  2:03,  2 users,  load average: 0.75, 1.10, 1.25

Esses números representam a média do último 1, 5 e 15 minutos.


2️⃣ Como interpretar

A interpretação depende do número de cores do seu CPU.

  • Load < número de cores → CPU com folga.
  • Load ≈ número de cores → CPU ocupada, mas ainda saudável.
  • Load > número de cores → CPU saturada, processos começam a esperar → sistema pode ficar lento.

Exemplo para um servidor com 4 cores:

LoadEstado
0–3Ok, CPU com folga
4CPU totalmente ocupada
>4Processos em fila, possível lentidão

⚠️ Importante: load average não é só CPU!
Um load alto pode ocorrer se muitos processos estiverem esperando I/O (disco lento, rede congestionada), mesmo que a CPU esteja ociosa.


3️⃣ Relação com CPU, memória e I/O

  • CPU-bound: load alto ≈ CPU alta → processos realmente competindo pela CPU.
  • I/O-bound: load alto + CPU baixa → processos travados esperando disco ou rede.
  • Memória: se o sistema está trocando memória (swap), o load sobe, porque processos ficam bloqueados esperando RAM.

4️⃣ Exemplos reais

  1. CPU saturada
$ top
%Cpu(s): 99.0 us, 1.0 sy, 0.0 ni, 0.0 id, 0.0 wa
load average: 12.50, 10.20, 9.80
  • CPU quase 100% ocupada.
  • Load > cores → processos em fila.
  • Solução: otimizar CPU, reduzir concorrência, distribuir carga.
  1. I/O lento
$ iostat -x 1
Device  r/s  w/s  %util
nvme0n1 500 300 99%
  • CPU ociosa, mas load alto.
  • Problema: disco saturado.
  • Solução: SSD mais rápido, otimizar queries, cache.

5️⃣ Regra prática rápida

Para decidir se o load é preocupante:

load / núm_cores ~ 1 → normal
load / núm_cores > 1 → atenção
load / núm_cores >> 1 → problema

Exemplo: servidor 8 cores

  • Load 4 → tranquilo
  • Load 8 → cheio
  • Load 16 → saturado

6️⃣ Comandos úteis

uptime         # Load médio
top            # Load + CPU + memória
htop           # Visual interativo
iostat -xz 1   # Disco
vmstat 1       # CPU, memória, swap, I/O

💡 Resumo mental:

Load average mede quantos processos estão “na fila” para usar CPU ou I/O.
CPU ociosa com load alto → I/O.
CPU cheia com load alto → saturação de CPU.

Vou montar um guia visual definitivo de interpretação de load average, mostrando como identificar rapidamente se o problema é CPU, I/O ou memória, com exemplos reais de comandos Linux.


Guia definitivo: interpretando Load Average no Linux


1️⃣ Conceito rápido

  • Load average: número médio de processos prontos para rodar na CPU ou esperando I/O.
  • Normalmente exibido em 3 intervalos: 1, 5 e 15 minutos.
  • Depende do número de cores do seu CPU.

2️⃣ Interpretação com base nos cores

LoadCPU CoresEstado
< coresqualquerCPU ociosa, sistema saudável
≈ corescoresCPU ocupada, normal
> corescoresCPU saturada, processos em fila

💡 Exemplo: servidor 4 cores

  • Load 2 → folga
  • Load 4 → cheio
  • Load 8 → saturado

3️⃣ Diagnóstico rápido: CPU x I/O x Memória

Sintoma no servidorLoadCPUDisco/I/OMemória/SwapInterpretação
CPU-boundalto90–100%baixonormalProcessos competindo por CPU
I/O-boundaltobaixo/okalto (%util ~100%)normalProcessos travados esperando disco/SSD/HDD ou rede
Memóriaaltobaixo/okvariávelswap > 0Processos travados esperando RAM, swap ativo

4️⃣ Comandos para análise

CPU

top
htop
  • Observe: %Cpu(s) e load average
  • Load alto + CPU alto → problema de CPU

Disco / I/O

iostat -xz 1
iotop -ao
  • %util perto de 100% → disco saturado
  • Load alto + CPU baixa + disco 100% → I/O-bound

Memória

free -h
vmstat 1
  • Swap > 0 → memória insuficiente
  • Load alto + CPU baixa + swap alto → falta de RAM

5️⃣ Exemplos reais

A) CPU saturada

$ top
%Cpu(s): 98.0 us, 1.5 sy, 0.0 ni, 0.5 id, 0.0 wa
load average: 12.5, 10.2, 9.8

✅ Interpretação: CPU quase 100%, load > cores → saturação de CPU
💡 Solução: otimizar processos, reduzir concorrência, escalar servidores.


B) I/O saturado

$ iostat -xz 1
Device  r/s  w/s  %util
nvme0n1 500 300 99%
  • CPU ociosa (ex.: 20%), load alto → I/O-bound
    💡 Solução: SSD mais rápido, cache, otimizar queries, reduzir concorrência de disco.

C) Memória / swap

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           8Gi        7.5Gi       0.1Gi       0.5Gi      0.4Gi       0.3Gi
Swap:          4Gi        2.5Gi       1.5Gi
  • CPU baixa, disco ok, swap alto → falta de RAM
    💡 Solução: aumentar memória, reduzir processos pesados, otimizar apps

6️⃣ Regra prática resumida

  1. Load / núm_cores < 1 → ok
  2. Load / núm_cores ≈ 1 → saudável
  3. Load / núm_cores > 1 → atenção
  4. Load / núm_cores >> 1 → problema crítico, investigar CPU/I/O/memória

Atalho rápido:

load alto + CPU alta → CPU-bound
load alto + CPU baixa + disco saturado → I/O-bound
load alto + CPU baixa + swap alto → memória

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *