A administração eficaz do sistema exige que se monitore de perto o uso de recursos, e o monitoramento de memória é uma parte crítica desse processo. Quando um sistema fica com pouca memória, seu desempenho pode se degradar significativamente. O Linux fornece várias ferramentas para ajudar a rastrear o consumo de memória, e uma das mais versáteis é o vmstat.
Introdução ao vmstat
O comando vmstat (estatísticas de memória virtual) é um poderoso monitor de utilização de memória que relata informações sobre processos, memória, paginação, E/S de bloco, interrupções (traps) e atividade da CPU. Executá-lo sem argumentos fornece um instantâneo do estado atual do sistema desde a última inicialização.
pete@icebox:~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 396528 38816 384036 0 0 4 2 38 79 0 0 99 0 0
A saída é organizada em várias colunas. Vamos detalhar o que cada campo significa.
Procs
r: O número de processos executáveis esperando por tempo de execução.b: O número de processos em suspensão ininterrupta, tipicamente esperando por E/S.
Memory
swpd: A quantidade de memória virtual usada (em kilobytes).free: A quantidade de memória ociosa (em kilobytes).buff: A quantidade de memória usada como buffers.cache: A quantidade de memória usada como cache de página.
Swap
si: A quantidade de memória trocada (swapped in) do disco por segundo (em kilobytes). Valores altos indicam que o sistema está com pouca memória física.so: A quantidade de memória trocada (swapped out) para o disco por segundo (em kilobytes). Isso deve ser idealmente zero.
IO
bi: Blocos recebidos de um dispositivo de bloco (blocos/s).bo: Blocos enviados para um dispositivo de bloco (blocos/s).
System
in: O número de interrupções por segundo, incluindo o relógio.cs: O número de trocas de contexto (context switches) por segundo.
CPU
Estas são porcentagens do tempo total da CPU.
us: Tempo gasto executando código não-kernel (tempo de usuário).sy: Tempo gasto executando código kernel (tempo de sistema).id: Tempo gasto ocioso.wa: Tempo gasto esperando por E/S.st: Tempo roubado de uma máquina virtual (para ambientes virtualizados).