Pré-requisitos:
Para executar as etapas demonstradas neste guia, você precisa dos seguintes componentes:
- Um sistema Linux configurado corretamente. Para fins de teste, considere usar uma VM Linux .
- Acesso a um usuário não root com privilégio sudo
- Compreensão básica da interface da linha de comandos
Memória Virtual no Linux
A memória física, também conhecida como RAM, tem quantidade finita. O kernel é responsável por distribuir este espaço para todos os programas em execução. Todos os programas em execução (incluindo o sistema operacional) residem na RAM.
No entanto, se a demanda por memória for maior do que a memória disponível, o sistema simplesmente trava (ou o programa solicitará mais espaço de memória). Na maioria das situações, esse é um resultado indesejado. É aqui que entra a memória virtual.
Memória virtual refere-se a um espaço em disco dedicado em seu HDD/SSD que pode atuar como memória adicional em situações difíceis. Por atuar como espaço RAM (mas não realmente), é considerado “virtual”. Em sistemas UNIX/Linux, esses espaços são chamados de espaços de troca.
O kernel do Linux move os blocos de memória para o espaço de troca e os recupera de volta para a RAM conforme necessário.
O desempenho da memória virtual é definitivamente mais lento que o da memória física e é diretamente proporcional ao desempenho do dispositivo de armazenamento. Porém, em configurações específicas de hardware (usando SSD NVMe, por exemplo), o desempenho pode ser equivalente ao da RAM.
O comando Vmstat
O comando “vmstat” é uma ferramenta de monitoramento que relata diversas informações sobre a memória virtual. Está disponível em todos os sistemas Linux como parte do pacote “sysstat”.
A estrutura de comando de “vmstat” é a seguinte:
$ vmstat < opções > < atraso > < contar >Uso Básico
Se for executado sem nenhum parâmetro, “vmstat” imprime as informações do sistema desde a última inicialização:
$ vmstat
A saída é organizada em seis segmentos:
- processos : Estatísticas de processos em execução no momento
- R : Número de processos ativos
- b : Número de processos adormecidos
- memória : Estatísticas sobre uso de memória
- swpd : Quantidade total de memória virtual (espaço de troca)
- livre : Espaço de troca disponível
- lustre : A quantidade de espaço de troca usada como memória buffer temporária
- esconderijo : Memória cache total
- trocar : Estatísticas sobre o espaço de troca
- Sim : Taxa de troca em
- então : Taxa de troca
- esse : Estatísticas de E/S
- com um : Número de blocos recebidos do(s) dispositivo(s) de bloco
- ser : Número de blocos enviados para bloquear dispositivos
- sistema : Estatísticas sobre agendamento
- em : Contagem de interrupções do sistema
- CS : Taxa de mudanças de contexto
- CPU : Várias estatísticas de CPU
- nós : CPU gastando tempo em processos não-kernel
- e : CPU gastando tempo em processos do kernel
- eu ia : CPU gastando tempo ocioso
- de : CPU gastando tempo aguardando a conclusão das operações de E/S
- st : tempo de CPU usado por uma máquina virtual
Alterando a unidade de exibição
Por padrão, “vmstat” relata os valores de memória em quilobytes. Para alterar a unidade, use o “ -S ' bandeira:
$ vmstat -S < argumento >
Aqui, “vmstat” imprime os valores em megabytes.
Existem várias unidades de memória disponíveis:
- M : 1048576 bytes (2 ^ 20 bytes)
- eu : 1.000.000 bytes (1.000 quilobytes)
- K : 1024 bytes (1 megabyte)
- k : 1000 bytes (1 quilobyte)
Atualização Contínua de Estatísticas
Por padrão, “vmstat” imprime o relatório uma vez. No entanto, podemos instruir “vmstat” a fornecer relatórios contínuos em um intervalo de tempo especificado (em segundos).
A estrutura do comando é a seguinte:
$ vmstat < atraso >Por exemplo, para obter as estatísticas atualizadas a cada 2 segundos, o comando é o seguinte:
$ vmstat 2
A saída não irá parar a menos que seja finalizada manualmente usando “Ctrl + C”.
Alternativamente, podemos especificar “vmstat” para fornecer as estatísticas para um número específico de vezes:
$ vmstat < atraso > < contar >Por exemplo, para obter as estatísticas atualizadas a cada 2 segundos durante 5 vezes, o comando fica assim:
$ vmstat 2 5
Memória ativa e inativa
Memória ativa refere-se ao espaço de memória que está sendo usado atualmente por um processo. Por outro lado, memória inativa refere-se ao espaço de memória atribuído a um processo que não está mais em execução.
Usando “vmstat”, podemos verificar a quantidade de memórias ativas e inativas que estão sendo utilizadas:
$ vmstat -a
Aqui, as colunas “buff” e “cache” são substituídas pelas colunas “inativo” e “ativo”, respectivamente.
Memória e agendamento
Para obter um relatório mais detalhado sobre memória e agendamento, use o seguinte comando:
$ vmstat -s
Aqui:
- Seção 1: Esta seção trata das informações básicas do sistema, como memória física total, memória ativa/inativa, memória livre/buffer/cache, etc.
- Seção 2: Várias estatísticas de CPU
- Tiques de CPU ruins : quantas vezes os processos de alta prioridade usaram a CPU.
- Belos tiques de CPU : o número de vezes que os processos de prioridade mais baixa usaram a CPU.
- Carrapatos da CPU do sistema : o número de vezes que os processos do kernel usaram a CPU.
- Carrapatos de CPU ociosos : O número de vezes que a CPU ficou ociosa.
- IO-espera CPU ticks : O número de vezes que a CPU aguarda pelo gerenciamento de E/S.
- IRQ : o número de vezes que a CPU recebeu as solicitações de interrupção.
- softirq : O número de vezes que a CPU recebeu solicitações de interrupção de software.
- ticks de CPU roubados : o número de vezes que as VMs roubaram o tempo de CPU.
- Seção 3: Estatísticas de paginação de memória
- Seção 4: Contadores de eventos
Garfos desde a inicialização
Forks referem-se a processos que foram gerados por processos existentes. Para obter as estatísticas sobre contagens de bifurcações, execute o seguinte comando:
$ vmstat -f
Estatísticas de disco e partição
O comando “vmstat” também pode fornecer informações sobre a atividade do disco. Para obter um rápido resumo da atividade do disco, execute o seguinte comando:
$ vmstat -D
Para obter um relatório de atividade de disco mais detalhado (incluindo estatísticas de leitura/gravação), use o seguinte comando:
$ vmstat -d
Aqui:
- Lê
- total : Contagem total de leituras do disco
- mesclado : contagem total de leituras do grupo
- setores : Número total de setores lidos
- EM : quantidade total de tempo para ler os dados do disco (em milissegundos)
- Escreve
- total : Contagem total de gravações em disco
- mesclado : Contagem total de gravações do grupo
- setores : Número total de setores escritos
- EM : Quantidade total de tempo para gravar no disco (em milissegundos)
- OI
- colocar : Total de leituras/gravações atuais do disco
- segundo : Quantidade de tempo gasto na operação contínua de leitura/gravação (em segundos)
O comando “vmstat” também pode gerar relatórios para uma partição de disco específica. Para obter o relatório de partição, use a seguinte estrutura de comando:
$ vmstat -p < identificador_partição >
Estatísticas de laje
A alocação de placas foi projetada para ser um mecanismo eficiente para a alocação de memória dos objetos. Em comparação com os mecanismos anteriores, a alocação de blocos oferece uma redução da fragmentação de memória (causada pela alocação e desalocação de memória).
Para verificar as estatísticas da laje do sistema, use o seguinte comando “vmstat”:
$ sudo vmstat -m
Observe que é necessária uma permissão de root para visualizar as estatísticas.
Aqui:
- Cache : Nome dos dados armazenados em cache
- Num : Número de objetos que estão ativos no cache Num
- Total : Contagem total de objetos em um cache específico
- Tamanho : Tamanho dos objetos em cache
- Páginas : Contagem de páginas de memória que contêm os objetos armazenados em cache
Conclusão
Neste guia, apresentamos as várias maneiras de usar o comando “vmstat”. Além da memória virtual, “vmstat” também pode gerar relatórios sobre estatísticas de disco, garfos, placas e muito mais.
Interessado em aprender sobre outras ferramentas de monitoramento de sistema? Aprender mais sobre htop , matar , obs: , etc.
Feliz computação!