Planejamento de capacidade: Conheça os comandos iostat, vmstat e mpstat

Fala pessoal, a partir de hoje irei mostrar uma série de artigos aqui sobre Linux, desde a parte de performance, comandos essenciais de rede, manutenção do sistema até serviços web. Fique ligado nos próximos posts.

Hoje o artigo será sobre planejamento de capacidade, e vamos aprender alguns comandos que são úteis para gerir esse processo. Planejamento de capacidade está ligado com a performance do sistema em geral, e todos os administradores de sistemas precisam medir e monitorar o desempenho para realizar qualquer tipo de planejamento de capacidade, isso ajuda a reduzir os impactos ao usuário e o correto armazenamento dos dados sem gargalos.

Existem diversas ferramentas Linux para monitorar a utilização de recursos, e também são úteis para identificar gargalos em servidores mais simples até equipamentos tradicionais de uso pessoal.

  • Instalação do pacote “sysstat”

Primeiramente, devemos instalar o pacote principal no caso o “sysstat”:

Esse pacote contém ferramentas para monitorar o uso e performance do sistema, que podem ser utilizadas diretamente ou agendadas para gerar relatórios, vamos começar com o “iostat”.

  • Entendendo o comando iostat

esse comando mostra o relatório de uso de CPU e de entrada/saída dos dispositivos de armazenamento.

Vamos executar o comando “whatis” para mostrar o conceito:

# whatis iostat
iostat (1) - Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions.

Para mais detalhes de opções do comando e formas de uso, consulte a man page do iostat:

Veja agora a saída do comando iostat:

comando iostat

Na saída acima, é exibido um relatório simplificado sobre a utilização de CPU, dispositivos e partições desde o start do sistema.

Agora precisamos entender o que são esses dados gerados pelo comando, vamos à explicação:

  • Sessão avg-cpu: este é o relatório referente à utilização do CPU desde o start do sistema.
    - %user: mostra o percentual de uso da CPU durante a execução no nível de usuário (programas).
    - %nice: mostra o percentual de uso da CPU durante a execução no nível de usuário com prioridade alterada.
    - %system: esse dado é de nível de sistema (kernel).
    - %iowait: mostra a porcentagem de tempo em que a CPU estava ociosa, aguardando alguma resposta de escrita/leitura em disco.
    - %steal: é para uso em máquinas virtuais, tempo em que a CPU da máquina virtual ficou aguardando a CPU da máquina real.
    - %idle: tempo em que a CPU estava ociosa e não aguardava por entrada/saída de disco.
  • Sessão device: utilização dos dispositivos de armazenamento do equipamento.
    - device: nome do dispositivo ou partição.
    - tps: transferências por segundos feitas no dispositivo.
    - kB_read/s e kB_wrtn/s: quantidade de dados lidos e gravados no dispositivo.
    - kB_read e kB_wrtn: quantidade de dados lidos e gravados no dispositivo no intervalo.

Agora a forma de utilização do iostat usando algumas opções no comando:

iostat -m (mostra os dados em mega)
iostat -h (mostra os dados de uma forma melhor de entender)
iostat -c (mostra apenas a CPU)
iostat -d (mostra os devices)
iostat -p (mostra os dados das partições)

Outra forma de trabalhar com o comando iostat é que ele pode mostrar os dados em intervalos de tempo, por exemplo:

Vamos mostrar os dados usando a opção -d para os devices a cada 2 segundos:

iostat -d 2 (gera o relatório a cada 2 segundos)
  • Entendendo o comando vmstat

Esse comando é uma alternativa ao iostat.

Informa sobre atividades de processos, memória, paginação, entrada/saída de blocos, falhas e CPU.

Vamos mostrar alguns exemplos de uso desse comando, veja a saída:

vmstat

Primeiramente temos que saber o que significa cada campo do comando. Abaixo eu mostro isso de forma simples:

  • Sessão procs:
    - r: número de processos executáveis ou aguardando execução (fila).
    -b: número de processos dormindo.
  • Sessão memory:
    - swpd: memória virtual utilizada.
    - free: memória livre.
    - buff: memória utilizada como buffer.
    - cache: memória usada como cache.
  • Sessão swap:
    - si: memória carregada do disco.
    - so: memória movida para o disco em segundos.
  • Sessão io:
    - bi: blocos recebidos de um dispositivo.
    bo: blocos enviados para um dispositivo.
  • Sessão system:
    - in: número de interrupções por segundo.
    - cs: número de mudanças por segundo.
  • Sessão cpu:
    - us: é um tempo gasto rodando código mas não do kernel do sistema.
    - sy: já esse é o tempo rodando código do kernel.
    - id: tempo ocioso.
    - wa: tempo esperando por entrada/saída.
    - st: tempo “roubado” de uma VM.

O vmstat mostra modos de exibição, sendo um deles o modo de disco com a opção -d:

vmstat -d

Para exibir informações de uma partição apenas, basta usar a opção -p:

vmstat -p /dev/xvda1

Para você entender os campos acima:
- reads: número de leituras feitas na partição.
- read sectors: setores lidos para a partição.
- writes: número total de escritas na partição.
- requested writes: número de requisções escritas feita na partição.

  • Entendendo o comando mpstat

Esse comando mostra informações de CPU. Ele é mais detalhado que o comando iostat, mostrando outros dados.

# whatis mpstat
mpstat (1) - Report processors related statistics.
mpstat
mpstat 2 (gera os dados de CPU a cada 2 segundos)
  • Carga de processamento

Bom, agora vendo um pouco sobre processos e atividade dos usuários podemos usar outros comandos mais específicos, veja alguns:

(mostra os processos ativos de maneira detalhada).

(monitora de forma constante os processos, mostra uso de memória e CPU de cada processo).

(mostra os processos ativos em formato de árvore, onde é possível visualizar os processos filhos ligados aos processos pais).

(esse comando é parecido com o comando top, porém ele permite uma maior interação com os processos do sistema, você pode executar os comandos diretamente com o htop, interagindo, ele atualiza a cada 2 segundos e isso ajuda muito na verificação).

Bom, o que eu queria mostrar à vocês de planejamento de capacidade no Linux seria isso, acabei fugindo um pouco falando sobre carga de processamento mas está tudo relacionado. Agradeço a sua leitura e fico à disposição para quaisquer dúvidas. Espero que o artigo seja útil. #VAIIII

Agradeço imensamente ao professor de Linux, Ricardo Prudenciato, pelo excelente conteúdo de estudo para a certificação LPIC-2 — Linux Engineer. 😃

Senior Linux Administrator at IBM

Senior Linux Administrator at IBM