Tutoriel Linux

Vmstat no Linux: RAM saturada, CPU ou disco?

Débutant6 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Um servidor está ficando lento, mas principal Nem sempre mostra um processo que está 100% bloqueado. Com vmstatEm poucos segundos, você pode verificar se as tarefas estão aguardando no processador, no disco ou na memória. Isso, claro, desde que você não tire nenhuma conclusão precipitada da primeira linha.

Eu sempre começo com várias amostras e depois comparo os contadores com… livre iostat e os processos. Esta é a única maneira de distinguir a verdadeira pressão na memória de uma CPU sobrecarregada ou de um armazenamento que não está respondendo corretamente.

O Vmstat ajuda a distinguir entre uma fila de CPU, pressão na memória e espera de E/S.

Execute o vmstat em várias amostras.

vmstat geralmente pertence ao pacote procps Ou Comece fazendo uma leitura a cada segundo, com um total de seis linhas:

-c Aumenta a largura das colunas se os valores ficarem difíceis de ler:

Mantenha também um segundo terminal aberto. Inicie a leitura, reproduza a ação lenta e observe as colunas que mudam simultaneamente. Um pico isolado durante uma operação de salvamento ou compilação não tem o mesmo peso que uma fila que permanece alta por vários minutos.

Leia as colunas r, b e CPU juntas.

No grupo testes, R Isso indica o número de tarefas executáveis ​​que estão em execução ou aguardando tempo de processador. Compare esse valor com o número de processadores lógicos:

nproc
tempo de atividade

Se R permanece bem acima do número de CPUs disponíveis e que Ou Se os níveis estiverem altos, provavelmente a máquina está com falta de tempo de processamento. nós corresponde ao código executado no espaço do usuário, enquanto sim Mede o trabalho do núcleo. Um valor sim Valores excepcionalmente altos podem ser resultado de um grande número de chamadas de sistema, interrupções ou mudanças de contexto.

A coluna b Isso inclui tarefas presas em um estado de suspensão ininterrupta, geralmente aguardando entrada ou saída. Se b andar com oláVerifique o armazenamento antes de culpar a CPU. olá Representa o tempo durante o qual o processador está ocioso enquanto uma operação de entrada/saída está pendente.

  • eu ia Tempo ocioso da CPU;
  • olá : aguardando entrada/saída;

st A repetição constante pode indicar um sistema físico sobrecarregado. Em uma máquina física, esta coluna normalmente permanece zerada. O guia sobre o média de carga no Linux Esta leitura está completa, pois a carga também inclui algumas tarefas bloqueadas e não se limita a uma porcentagem da CPU.

Reconhecendo a verdadeira pressão da memória com “se e somente se”

As colunas swpd, livre, lustre E escondido Fornecem uma visão compacta da memória. Não são suficientes para indicar saturação. O Linux reutiliza parte da RAM como cache, e livre Em vmstat não substitui a coluna disponível da ordem livre

grátis -h
trocar --show

swpd Indica a quantidade de swap utilizada. Um valor diferente de zero não comprova que o sistema ainda esteja trocando páginas. Preste atenção especial a isso. se E então Com base em amostras recentes:

  • se : dados lidos da memória swap para a RAM;
  • então : dados movidos da RAM para a memória de troca.

Valores repetidos em se , uma memória disponível Níveis persistentemente baixos de memória e tempos de resposta degradados são um forte sinal de pressão na memória. Uma área de swap antiga e ocupada, sem atividade de swap atual, não tem o mesmo significado. O guia sobre RAM livre e disponível detalha o papel do cache, enquanto o artigo sobre o trocar no Linux

Confirme a espera do disco com bi, bo e iostat.

eu, bi E bom Representam os blocos recebidos e enviados por segundo. Mostram a atividade geral, mas não o dispositivo responsável nem seu tempo de resposta. b E olá permanecer alto, mudar para iostat

iostat -xz 1 5

Olhe em particular espere %util para cada disco. Não confie em um único limite: um SSD NVMe pode lidar com várias operações em paralelo, enquanto um disco rígido se degrada rapidamente com acesso aleatório. Compare os valores com o comportamento normal da máquina e o processamento atual.

iostat no Linux Explica como conectar esses contadores ao dispositivo correto. Se as lentidões forem acompanhadas de erros, verifique também as mensagens do kernel:

journalctl -k -b -p aviso..alerta
systemctl --falhou

Recupere o processo antes de reiniciar um serviço.

vmstat Indica a provável natureza do bloqueio, não o nome do processo. Em seguida, classifique as tarefas de acordo com o recurso suspeito:

ps -eo pid,user,stat,ni,pcpu,pmem,comm --sort=-pcpu | head
ps -eo pid,user,stat,ni,pcpu,pmem,comm --sort=-pmem | head
htop

Em ESTATÍSTICA, um estado D Isso geralmente corresponde a um sono ininterrupto. Pode explicar uma coluna. b O PID é alto, mas não o encerre imediatamente. Primeiro, identifique o serviço, os arquivos abertos e os logs:

ps -fp PID

jornalctl -u serviço-concerne -n ​​​​100 --no-pager

Um banco de dados pode consumir muita RAM sem vazamento de memória, e um processo em um estado D Pode ser que esteja aguardando um disco ou armazenamento de rede. Reiniciar o sistema às vezes mascara o sintoma sem resolver o problema. Verifique a duração, a carga de trabalho e os erros antes de tomar qualquer providência.

Decida com base nas contagens sobrepostas.

O diagnóstico torna-se útil quando várias colunas contam a mesma história:

  • CPU saturada : nproc, com nós Ou sim alto e pouco eu ia ;
  • pressão de memória disponível fique baixo, se Ou então retorno em várias amostras e a latência aumenta;
  • espera de disco : b E subir, então iostat confirma que o dispositivo é lento;
  • contenção de virtualização : st Permanece visível em uma máquina virtual, apesar de uma carga interna moderada.

Para procurar uma instância do OOM killer, use os logs do kernel:

journalctl -k -b | grep -Ei 'sem memória|oom-killer|processo morto'

Página de manual do vmstat iostat Detalhes das métricas de armazenamento. Mantenha suas leituras antes e durante a lentidão: sem comparação ao longo do tempo, mesmo um contador alto permanece difícil de interpretar.

sudo apt update && sudo apt upgrade