Como usar o comando vmstat no Linux

Prompt de terminal em um desktop Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

Seu computador Linux ou macOS está usando memória virtual. Descubra como isso está afetando o uso de memória física, CPU e recursos do disco rígido pelo 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 vmstatcomando, que relata as estatísticas da memória virtual .

O comando vmstat

Se você digitar vmstatcomo 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

vmstat em uma janela de terminal

Uma pequena tabela de valores é exibida.

saída vmstat em uma janela de terminal

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

Colunas à direita de saída de vmstat em uma janela de terminal

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.
Recomendado:  Como funcionam os interruptores de luz de três vias

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 usada).
  • 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 trocado na partir do espaço swap.
  • assim : quantidade de memória virtual trocado para fora para o 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 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 mudança 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 na execução de 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 executando o 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 termine de atender outras máquinas virtuais antes de poder voltar e atender a essa máquina virtual.

Usando um intervalo de tempo

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

vmstat 5

vmstat 5 em uma janela de terminal

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

saída do vmstat 5 em uma janela de terminal

Usando um valor de contagem

Usar um delay valor 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 countvalor, bem como um delayvalor.

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

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

vmstat 5 4

vmstat 5 4 em uma janela de terminal

Depois de quatro atualizações vmstatpara por conta própria.

Recomendado:  Como instalar o software Linux no Ubuntu Bash Shell do Windows 10

saída do vmstat 5 4 em uma janela de terminal

Mudando as unidades

Você pode optar por ter a memória e as estatísticas de troca exibidas em kilobytes ou megabytes usando a opção -S(caractere de unidade). Isto 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 -SM

vmstat 10 -SM em uma janela de terminal

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

saída do vmstat 10 -SM em uma janela de terminal

Memória ativa e inativa

Se você usar a -aopção (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 -aopção, conforme mostrado:

vmstat 5 -a -SM

vmstat 5 -a -SM em uma janela de terminal

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

saída de vmstat 5 -a -SM em uma janela de terminal

Forks

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

Em outras palavras, isso mostra o número de tarefas que foram iniciadas (e, na maioria delas, fechadas novamente) desde que o sistema foi inicializado. Cada processo iniciado na 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

vmstat -f em uma janela de terminal

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 -mopção (lajes). Você precisará usar sudoe será solicitada sua senha. Como a saída pode ser bastante longa, estamos canalizando-a less.

sudo vmstat -m | Menos

sudo vmstat -m |  menos em uma janela de terminal

A saída possui cinco colunas. Esses 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.
Recomendado:  Existe algum risco no uso de cabos Y com dispositivos periféricos USB?

saída de sudo vmstat -m |  menos em uma janela de terminal

Pressione qpara sair less.

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 -sopção (estatísticas). Observe que é um “s” minúsculo.

vmstat -s

vmstat -s em uma janela de terminal

Embora as estatísticas relatadas sejam basicamente as mesmas que as informações que constituem a vmstatsaída 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.

saída de vmstat -s na janela terminal

Exibindo estatísticas de disco

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

vmstat -d | Menos

vmstat -d |  menos em uma janela de terminal

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

saída de vmstat -d |  menos em uma janela de terminal

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

output vmstat -d |  menos em uma janela de terminal

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 de disco atuais.
  • 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

vmstat -D em uma janela de terminal

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 squashfspseudo-sistema de arquivos é criado e anexado a um dispositivo / dev / loop.

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

saída de vmstat -D em uma janela de terminal

Exibindo estatísticas de partição

Para ver as estatísticas relacionadas a uma partição específica, use a -popção (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

vmstat -p em uma janela de terminal

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.

saída de vmstat -p sda1 em uma janela de terminal

Uma espiada nos bastidores

É 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.

vmstatpode fornecer uma tonelada de informações úteis. Agora você sabe como acessá-lo e o que significa. E avisado vale por dois – quando você precisar arregaçar as mangas e fazer alguns diagnósticos, saberá que está vmstatdo seu lado.