Como usar o comando vmstat no Linux

Seu computador Linux ou macOS está usando memória virtual. Descubra como isso está afetando o uso de recursos de memória física, CPU e disco rígido pelo seu sistema.

O que é memória virtual?

Seu computador está equipado com uma quantidade finita de memória física chamada memória de acesso aleatório (RAM). Essa RAM precisa ser gerenciada pelo kernel e compartilhada entre o sistema operacional e quaisquer aplicativos que estejam em execução. Se essas demandas combinadas estão exigindo mais memória do que a fisicamente instalada em seu computador, o que o kernel pode fazer?

Linux e sistemas operacionais semelhantes ao Unix, como o macOS, podem usar espaço no disco rígido para ajudá-los a gerenciar as demandas de memória. Uma área reservada de espaço no disco rígido chamada “espaço de troca” pode ser usada como se fosse uma extensão da RAM. Esta é a memória virtual.

O kernel do Linux pode gravar o conteúdo de um bloco de memória no espaço de troca e liberar essa região de RAM para uso por outro processo. A memória trocada – também chamada de “paginada” – pode ser recuperada do espaço de troca e restaurada na RAM quando necessário.

Obviamente, a velocidade de acesso à memória paginada é mais lenta do que a da memória retida na RAM. E essa não é a única compensação. Embora a memória virtual forneça uma maneira para o Linux gerenciar suas demandas de memória, o uso da memória virtual aumenta a carga de trabalho em outras partes do computador.

Seu disco rígido deve realizar mais leituras e gravações. O kernel – e, portanto, a CPU – deve trabalhar mais à medida que troca a memória, troca a memória e mantém todas as placas girando para satisfazer as necessidades de memória dos diferentes processos.

O Linux fornece uma maneira de monitorar toda essa atividade na forma do comando vmstat, que relata estatísticas de memória virtual.

O comando vmstat

Se você digitar vmstat como um comando sem parâmetros, ele mostrará um conjunto de valores. Esses valores são as médias de cada uma das estatísticas desde a última reinicialização do computador. Esses números não são um instantâneo dos valores “agora”.

vmstat

Uma pequena tabela de valores é exibida.

Existem colunas intituladas Procs, Memory, Swap, IO, System e CPU. A coluna final (coluna mais à direita) contém os dados relativos à CPU.

Aqui está uma lista dos itens de dados em cada coluna.

Proc

r: O número de processos executáveis. Esses são processos que foram iniciados e estão em execução ou aguardando seu próximo burst de ciclos de CPU dividido em fatias de tempo.
b: O número de processos em hibernação ininterrupta. O processo não está hibernando, está executando uma chamada de sistema de bloqueio e não pode ser interrompido até que tenha concluído sua ação atual. Normalmente, o processo é um driver de dispositivo aguardando a liberação de algum recurso. Quaisquer interrupções enfileiradas para esse processo são tratadas quando o processo retoma sua atividade normal.

  Como jogar Metro Exodus no Linux

Memória

swpd: a quantidade de memória virtual usada. Em outras palavras, quanta memória foi trocada.,
livre: a quantidade de memória ociosa (atualmente não utilizada).
buff: a quantidade de memória usada como buffers.
cache: a quantidade de memória usada como cache.

Troca

si: Quantidade de memória virtual trocada do espaço de troca.
portanto: Quantidade de memória virtual trocada para espaço de troca.

IO

bi: Blocos recebidos de um dispositivo de bloco. O número de blocos de dados usados ​​para trocar a memória virtual de volta para a RAM.
bo: Blocos enviados para um dispositivo de bloco. O número de blocos de dados usados ​​para trocar a memória virtual da RAM para o espaço de troca.

Sistema

in: O número de interrupções por segundo, incluindo o relógio.
cs: o número de mudanças de contexto por segundo. Uma troca de contexto ocorre quando o kernel muda do processamento do modo de sistema para o processamento do modo de usuário.

CPU

Todos esses valores são porcentagens do tempo total da CPU.

us: Tempo gasto executando código não kernel. Ou seja, quanto tempo é gasto no processamento do tempo do usuário e no processamento do tempo agradável.
sy: Tempo gasto na execução do código do kernel.
id: Tempo gasto inativo.
wa: Tempo gasto esperando por entrada ou saída.
st: Tempo roubado de uma máquina virtual. Este é o tempo que uma máquina virtual tem que esperar até que o hipervisor conclua a manutenção de outras máquinas virtuais antes de poder voltar e atender a essa máquina virtual.

Usando um intervalo de tempo

Podemos fazer com que o vmstat forneça atualizações regulares para esses números usando um valor de atraso. O valor do atraso é fornecido em segundos. Para que as estatísticas sejam atualizadas a cada cinco segundos, usaríamos o seguinte comando:

vmstat 5

A cada cinco segundos, o vmstat adicionará outra linha de dados à tabela. Você precisará pressionar Ctrl + C para parar isso.

Usando um valor de contagem

Usar um valor de atraso muito baixo colocará pressão adicional em seu sistema. Se você precisar de atualizações rápidas para tentar diagnosticar um problema, é recomendável usar um valor de contagem, bem como um valor de atraso.

O valor de contagem informa ao vmstat quantas atualizações devem ser executadas antes de sair e retorna ao prompt de comando. Se você não fornecer um valor de contagem, o vmstat será executado até ser interrompido por Ctrl + C.

Para que o vmstat forneça uma atualização a cada cinco segundos, mas apenas para quatro atualizações, use o seguinte comando:

vmstat 5 4

Depois de quatro atualizações, o vmstat para por conta própria.

  Como usar o comando chmod no Linux

Mudando as unidades

Você pode escolher ter a memória e as estatísticas de troca exibidas em kilobytes ou megabytes usando a opção -S (unidade-caractere). Deve ser seguido por um de k, K, m ou M. Estes representam:

k: 1000 bytes
K: 1024 bytes
m: 1000000 bytes
M: 1048576 bytes

Para que as estatísticas sejam atualizadas a cada 10 segundos com as estatísticas de memória e troca exibidas em megabytes, use o seguinte comando:

vmstat 10 -S M

As estatísticas de memória e troca agora são mostradas em megabytes. Observe que a opção -S não afeta as estatísticas do bloco IO. Eles são sempre exibidos em blocos.

Memória ativa e inativa

Se você usar a opção -a (ativo), as colunas de memória buff e cache são substituídas pelas colunas “inativo” e “ativo”. Como eles sugeriam, eles mostram a quantidade de memória ativa e inativa.

Para ver essas duas colunas em vez das colunas de buff e cache, inclua a opção -a, conforme mostrado:

vmstat 5 -a -S M

As colunas inativas e ativas são afetadas pela opção -S (caractere de unidade).

Forks

A opção -f exibe o número de bifurcações ocorridas desde que o computador foi inicializado.

Em outras palavras, mostra o número de tarefas que foram iniciadas (e, na maioria delas, fechadas novamente) desde que o sistema foi inicializado. Cada processo iniciado a partir da linha de comando aumentaria esse número. Cada vez que uma tarefa ou processo gera ou clona uma nova tarefa, esse número aumentará.

vmstat -f

O visor dos garfos não é atualizado.

Exibindo Slabinfo

O kernel tem seu próprio gerenciamento de memória para se preocupar, bem como o gerenciamento de memória para o sistema operacional e todos os aplicativos.

Como você pode imaginar, o kernel está alocando e desalocando memória continuamente para os muitos tipos diferentes de objetos de dados que ele deve manipular. Para tornar isso o mais eficiente possível, ele usa um sistema chamado lajes. Esta é uma forma de armazenamento em cache.

A memória alocada, usada e não mais necessária para um tipo específico de objeto de dados do kernel pode ser reutilizada para outro objeto de dados do mesmo tipo sem que a memória seja desalocada e realocada. Pense nas placas como segmentos de RAM pré-alocados e feitos sob medida para as necessidades do próprio kernel.

Para ver as estatísticas das lajes, use a opção -m (lajes). Você precisará usar o sudo e será solicitada sua senha. Como a saída pode ser bastante longa, estamos canalizando menos.

sudo vmstat -m | less

A saída possui cinco colunas. Estes são:

Cache: Nome do cache.
num: O número de objetos atualmente ativos neste cache.
total: o número total de objetos disponíveis neste cache.
size: O tamanho de cada objeto no cache.
páginas: O número total de páginas de memória que têm (pelo menos) um objeto atualmente associado a este cache.

  As 6 melhores ferramentas de mineração de criptomoedas para Linux

Pressione q para deixar menos.

Exibindo contadores de eventos e estatísticas de memória

Para exibir uma página de contadores de eventos e estatísticas de memória, use a opção -s (estatísticas). Observe que é um “s” minúsculo.

vmstat -s

Embora as estatísticas relatadas sejam basicamente as mesmas que as informações que compõem a saída vmstat padrão, algumas delas são divididas em mais detalhes.

Por exemplo, a saída padrão combina o tempo de CPU do usuário agradável e não agradável na coluna “us”. A exibição -s (estatísticas) lista essas estatísticas separadamente.

Exibindo estatísticas de disco

Você pode obter uma lista semelhante de estatísticas de disco usando a opção -d (disco).

vmstat -d | less

Para cada disco, três colunas são exibidas: Leituras, Gravações e E / S.

IO é a coluna mais à direita. Observe que a coluna sec em IO é medida em segundos, mas as estatísticas baseadas no tempo nas colunas de leitura e gravação são medidas em milissegundos.

Isso é o que as colunas significam:

total: a contagem total de leituras do disco.
mesclado: a contagem total de leituras agrupadas.
setores: a contagem total de setores lidos.
ms: Contagem total de tempo em milissegundos que foi usado para ler dados do disco.

escreve

total: a contagem total de gravações em disco.
mesclado: a contagem total de gravações agrupadas.
setores: a contagem total de setores gravados.
ms = Contagem total de tempo em milissegundos que foi usado para gravar dados no disco.

IO

cur: Número de leituras ou gravações do disco atual.
sec: Tempo gasto em segundos para qualquer leitura ou gravação em andamento.

Exibindo Estatísticas Resumidas de Disco

Para ver uma exibição rápida das estatísticas resumidas da atividade do disco, use a opção -D (soma do disco). Observe o “D” maiúsculo.

vmstat -D

O número de discos pode parecer anormalmente alto. O computador usado para pesquisar este artigo está executando o Ubuntu. Com o Ubuntu, cada vez que você instala um aplicativo de um Snap, um pseudo-sistema de arquivos squashfs é criado, o qual é anexado a um dispositivo / dev / loop.

Irritantemente, essas entradas de dispositivo são contadas como dispositivos de disco rígido por muitos dos comandos e utilitários do Linux.

Exibindo estatísticas de partição

Para ver as estatísticas relacionadas a uma partição específica, use a opção -p (partição) e forneça o identificador da partição como um parâmetro de linha de comando.

Aqui, veremos a partição sda1. O dígito um indica que esta é a primeira partição no dispositivo sda, que é o disco rígido principal deste computador.

vmstat -p sda1

As informações retornadas mostram a contagem total de leituras e gravações de disco de e para essa partição, e o número de setores incluídos nas ações de leitura e gravação de disco.

Uma espiada debaixo do capô

É sempre bom saber como levantar o capô e ver o que está acontecendo por baixo. Às vezes, você tentará resolver um problema, às vezes não será do seu interesse porque deseja saber como o seu computador funciona.

O vmstat pode fornecer muitas informações úteis. Agora você sabe como acessá-lo e o que significa. E prevenido vale por dois – quando você precisar arregaçar as mangas e fazer alguns diagnósticos, você saberá que tem o vmstat do seu lado.