O mpstat, abreviação de Multiprocessor Statistics, é uma ferramenta essencial para monitoramento de sistema em tempo real no ambiente Linux. Este utilitário exibe estatísticas detalhadas sobre o processador, obtidas diretamente do arquivo /proc/stat. Em sistemas com múltiplos núcleos ou processadores, o mpstat oferece a capacidade única de analisar não apenas o desempenho médio de todos os processadores, mas também o comportamento individual de cada núcleo, diferenciando-se de ferramentas como vmstat que fornecem apenas uma visão geral do sistema.
Sintaxe e Parâmetros
A estrutura básica do comando mpstat permite diversas configurações de acordo com as necessidades de monitoramento:
mpstat [-P {|TODOS}] [intervalo [vezes]]
Parâmetros:
- -P {|TODOS} - Especifica qual processador monitorar, onde o valor numérico varia de 0 até (número total de núcleos - 1). O uso de TODOS exibe informações agregadas de todos os núcleos.
- intervalo - Define o tempo em segundos entre cada coleta de dados.
- vezes - Indica quantas amostras serão coletadas, devendo ser usado em conjunto com o parâmetro de intervalo.
Quando nenhum parâmetro é fornecido, o mpstat exibe as médias estatísticas desde a inicialização do sistema. Com o intervalo especificado, a primeira linha apresenta médias desde a inicialização, enquanto as linhas subsequentes mostram médias para cada intervalo de tempo definido.
Exemplos Práticos
Monitoramento Geral do Sistema
Para vsiualizar o estado geral do processador com atualizações a cada 2 segundos:
$ mpstat 2
Horário CPU %usuário %prioridade %sistema %e_espera %irq %soft %roubo %visitante %ocioso
20:15:01 todos 0.05 0.00 0.01 0.02 0.00 0.00 0.00 0.00 99.92
20:15:03 todos 0.03 0.00 0.02 0.04 0.00 0.00 0.00 0.00 99.91
20:15:05 todos 0.07 0.01 0.03 0.01 0.00 0.00 0.00 0.00 99.88
Análise Individual dos Núcleos
Para examinar o desempenho específico de cada núcleo do processador:
$ mpstat -P TODOS 3
Horário CPU %usuário %prioridade %sistema %e_espera %irq %soft %roubo %visitante %ocioso
20:17:22 todos 0.12 0.00 0.05 0.03 0.00 0.00 0.00 0.00 99.80
20:17:22 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
20:17:22 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
20:17:22 2 0.25 0.00 0.10 0.06 0.00 0.00 0.00 0.00 99.59
20:17:22 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
20:17:22 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Monitoramento com Controle de Amostragem
Para realizar 5 amostras com intervalos de 4 segundos:
$ mpstat 4 5
Horário CPU %usuário %prioridade %sistema %e_espera %irq %soft %roubo %visitante %ocioso
20:20:15 todos 0.08 0.01 0.04 0.02 0.01 0.00 0.00 0.00 99.84
20:20:19 todos 0.10 0.02 0.05 0.03 0.00 0.01 0.00 0.00 99.79
20:20:23 todos 0.07 0.01 0.03 0.01 0.00 0.00 0.00 0.00 99.88
20:20:27 todos 0.12 0.00 0.06 0.04 0.00 0.00 0.00 0.00 99.78
20:20:31 todos 0.09 0.02 0.04 0.02 0.01 0.00 0.00 0.00 99.82
Descrição dos Campos de Saída
A saída do mpstat fornece diversas métricas importantes sobre o uso do processador:
- %usuário - Porcentagem de tempo gasto em modo de usuário (excluindo processos com baixa prioridade).
- %prioridade - Porcentagem de tempo gasto por processos com baixa prioridade (nice).
- %sistema - Porcentagem de tempo gasto em modo kernel.
- %e_espera - Porcentagem de tempo gasto esperando por operações de E/S de disco.
- %irq - Porcentagem de tempo gasto em interrupções de hardware.
- %soft - Porcentagem de tempo gasto em interrupções de software.
- %roubo - Porcentagem de tempo roubado por máquinas virtuais (hypervisors).
- %visitante - Porcentagem de tempo gasto por processos de virtualização.
- %ocioso - Porcentagem de tempo em que o processador esteve ocioso (excluindo espera por E/S).
Fórmulas de Cálculo
As estatísticas apresentadas são calculadas com base nas diferenças entre as amostras coletadas:
total_atual = usuário + sistema + prioridade + ocioso + e_espera + irq + softirq
total_anterior = anterior_usuário + anterior_sistema + anterior_prioridade + anterior_ocioso + anterior_e_espera + anterior_irq + anterior_softirq
usuário = usuário_atual - usuário_anterior
total = total_atual - total_anterior
Onde:
- __atual representa o valor da amostra atual
- _anterior representa o valor da amostra anterior ao intervalo
Todos os valores são expressos com duas casas decimais.
O mpstat é uma ferramenta indispensável para administradores de sistemas que precisam analisar o comportamento do processador em tempo real, identificar gargalos de desempenho e otimizar a utilizização de recursos em ambientes Linux.