Coletar métricas de desempenho para uma VM do Linux
Aplica-se a: ✔️ VMs linux
Este artigo descreve como recuperar métricas de desempenho de uma VM (máquina virtual) Linux no Microsoft Azure usando os utilitários Sysstat (ferramentas de monitoramento de desempenho). Ele fornece exemplos de como usar esses utilitários e ler suas saídas.
Vários comandos estão disponíveis para coletar contadores de desempenho no Linux. Comandos como vmstat
e uptime
fornecem métricas essenciais do sistema, como uso da CPU, memória do sistema e carga do sistema. A maioria desses comandos é pré-instalada por padrão, enquanto outros podem ser facilmente acessados a partir dos repositórios padrão.
Com base no tipo de métricas, esses comandos podem ser categorizados em:
Instale os utilitários Sysstat para Linux
Você pode instalar os utilitários Sysstat em uma VM Linux usando um comando Bash ou o recurso Executar Comando por meio da CLI do Azure. Se você usar os comandos da CLI do Azure fornecidos neste artigo, verifique se as duas variáveis de ambiente a seguir estão definidas. Você precisa substituir o nome do grupo de recursos e o nome da VM pelos valores reais.
export MY_RESOURCE_GROUP_NAME="yourResourceGroup"
export MY_VM_NAME="yourVM"
Observação
Alguns dos comandos a seguir requerem privilégios de root.
Para instalar o sysstat
pacote em uma VM do Linux, use o seguinte comando:
Ubuntu:
Red Hat:
SUSE:
CPU
Ferramenta mpstat
O mpstat
comando faz parte do sysstat
pacote. Ele exibe a utilização da CPU e a média de cada CPU, o que é útil para identificar o uso da CPU. O mpstat
comando fornece uma visão geral da utilização da CPU das CPUs disponíveis, ajudando a identificar o equilíbrio de uso e se uma única CPU está sobrecarregada.
Aqui está um exemplo de como executar mpstat
:
-P
: Indica que o processador deve exibir estatísticas e oALL
argumento indica que as estatísticas de todas as CPUs on-line no sistema devem ser exibidas.1
: O primeiro argumento numérico especifica o intervalo (em segundos) no qualmpstat
deve atualizar e exibir novas estatísticas.2
: O segundo argumento numérico especifica o número de vezesmpstat
que deve exibir estatísticas. Nesse caso, ele imprime duas estatísticas em um intervalo de um segundo.
Você pode aumentar o argumento number of times para acomodar tempos de coleta de dados mais longos. Geralmente, três ou cinco segundos são suficientes. Para sistemas com contagens de núcleos mais altas, reduzi-lo para dois segundos pode ajudar a gerenciar o volume de dados exibidos.
Como ler a saída mpstat
Aqui está um exemplo de saída de mpstat
:
Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9) 02/21/24 _x86_64_ (8 CPU)
16:55:50 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
16:55:51 all 69.09 0.00 30.16 0.00 0.38 0.38 0.00 0.00 0.00 0.00
16:55:51 0 77.23 0.00 21.78 0.00 0.99 0.00 0.00 0.00 0.00 0.00
16:55:51 1 97.03 0.00 0.99 0.00 0.99 0.99 0.00 0.00 0.00 0.00
16:55:51 2 11.11 0.00 88.89 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16:55:51 3 11.00 0.00 88.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00
16:55:51 4 83.84 0.00 16.16 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16:55:51 5 76.00 0.00 23.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00
16:55:51 6 96.00 0.00 3.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00
16:55:51 7 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[...]
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 74.02 0.00 25.52 0.00 0.25 0.21 0.00 0.00 0.00 0.00
Average: 0 63.00 0.00 36.67 0.00 0.33 0.00 0.00 0.00 0.00 0.00
Average: 1 97.33 0.00 1.67 0.00 0.33 0.67 0.00 0.00 0.00 0.00
Average: 2 42.33 0.00 57.33 0.00 0.33 0.00 0.00 0.00 0.00 0.00
Average: 3 34.33 0.00 65.00 0.00 0.33 0.33 0.00 0.00 0.00 0.00
Average: 4 88.63 0.00 11.04 0.00 0.00 0.33 0.00 0.00 0.00 0.00
Average: 5 71.33 0.00 28.33 0.00 0.33 0.00 0.00 0.00 0.00 0.00
Average: 6 95.65 0.00 4.01 0.00 0.00 0.33 0.00 0.00 0.00 0.00
Average: 7 99.67 0.00 0.00 0.00 0.33 0.00 0.00 0.00 0.00 0.00
Há várias coisas importantes a serem observadas. A primeira linha fornece informações úteis:
- Kernel e versão:
5.14.0-362.8.1.el9_3.x86_64
- Nome do host:
alma9
- Data:
02/21/24
- Arquitetura:
_x86_64_
- Número total de CPUs (esta informação é útil para interpretar a saída de outros comandos):
(8 CPU)
Em seguida, as métricas das CPUs são exibidas. Aqui está uma explicação de cada coluna:
Time
: O carimbo de data/hora que indica quando a amostra foi coletada.CPU
: O identificador numérico da CPU. O identificadorall
representa uma média para todas as CPUs.%usr
: A porcentagem de utilização da CPU por processos de espaço do usuário, normalmente aplicativos de usuário.%nice
: A porcentagem de utilização da CPU por processos de espaço do usuário com um bom valor (prioridade).%sys
: A porcentagem de utilização da CPU por processos de espaço do kernel.%iowait
: A porcentagem de tempo ocioso da CPU aguardando operações de E/S pendentes.%irq
: a porcentagem de tempo de CPU gasto na manutenção de interrupções de hardware.%soft
: a porcentagem de tempo de CPU gasto na manutenção de interrupções de software.%steal
: a porcentagem de tempo de CPU que uma VM gastou atendendo a outras VMs (não aplicável ao Azure devido à falta de superprovisionamento de CPU).%guest
: a porcentagem de tempo de CPU que uma CPU virtual gastou atendendo VMs (não aplicável ao Azure; relevante apenas para sistemas bare-metal que executam VMs).%gnice
: a porcentagem de tempo de CPU que uma CPU virtual com um bom valor gasto atendendo VMs (não aplicável ao Azure; relevante apenas para sistemas bare-metal que executam VMs).%idle
: a porcentagem de tempo de CPU que estava ocioso e não aguardando solicitações de E/S.
Principais considerações
Principais considerações ao revisar a saída de mpstat
:
- Verifique se todas as CPUs estão carregadas corretamente e se nenhuma CPU atende a toda a carga. Essas informações podem indicar um aplicativo de thread único.
- Procure um equilíbrio saudável entre
%usr
e%sys
, pois o oposto indicaria mais tempo gasto na carga de trabalho real do que em atender aos processos do kernel. %iowait
Procure porcentagens, pois valores altos podem indicar um sistema que está constantemente aguardando solicitações de E/S.- O alto
%soft
uso pode indicar alto tráfego de rede.
Ferramenta vmstat
O vmstat
utilitário está amplamente disponível na maioria das distribuições Linux. Ele fornece uma visão geral de alto nível da utilização de CPU, memória e E/S de disco em um único painel.
Aqui está um exemplo de como executar vmstat
:
-w
: Use impressão ampla para manter colunas consistentes.1
: O primeiro argumento numérico especifica o intervalo em segundos entre cada relatório. Nesse caso, vmstat produzirá um relatório a cada segundo.5
: O segundo argumento numérico especifica o número de relatórios que vmstat deve gerar. Com5
especificado aqui, vmstat gerará um total de cinco relatórios.
Como ler a saída vmstat
Aqui está um exemplo de saída de vmstat
:
--procs-- -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
r b swpd free buff cache si so bi bo in cs us sy id wa st
14 0 0 26059408 164 137468 0 0 89 3228 56 122 3 1 95 1 0
14 1 0 24388660 164 145468 0 0 0 7811 3264 13870 76 24 0 0 0
18 1 0 23060116 164 155272 0 0 44 8075 3704 15129 78 22 0 0 0
18 1 0 21078640 164 165108 0 0 295 8837 3742 15529 73 27 0 0 0
15 2 0 19015276 164 175960 0 0 9 8561 3639 15177 73 27 0 0 0
A saída é categorizada nos seis grupos a seguir. A saída mostra estatísticas gerais para todo o sistema (ou seja, todas as CPUs e dispositivos de bloco agregados).
procs
: Estatísticas para processos.memory
: Estatísticas da memória do sistema.swap
: Estatísticas para swap.io
: Estatísticas de E/S de disco.system
: Estatísticas para alternâncias e interrupções de contexto.cpu
: Estatísticas de uso da CPU.
procs
A seção procs tem duas colunas:
r
: O número de processos executáveis na fila de execução.b
: o número de processos bloqueados aguardando E/S.
Esta seção mostra imediatamente se há algum gargalo no sistema. Números altos em qualquer coluna indicam processos enfileirados e aguardando recursos.
A r
coluna indica o número de processos que estão aguardando o tempo de CPU para serem executados. Uma maneira fácil de interpretar esse número é a seguinte: se o número de processos na r
fila for maior que o número total de CPUs, pode-se inferir que a CPU do sistema está muito carregada para alocar tempo de CPU para todos os processos que aguardam para serem executados.
A b
coluna indica o número de processos aguardando execução e bloqueados por solicitações de E/S. Um número alto nesta coluna indicaria um sistema que está passando por alta E/S e os processos não podem ser executados devido a outros processos aguardando a conclusão das solicitações de E/S. Isso também pode indicar alta latência de disco.
memória
A seção de memória tem quatro colunas. Os valores são mostrados em bytes. Esta seção fornece uma visão geral de alto nível do uso de memória.
swpd
: A quantidade de memória de troca usada.free
: A quantidade de memória livre.buff
: a quantidade de memória usada para buffers.cache
: A quantidade de memória usada para cache.
troca
A seção de troca tem duas colunas:
si
: A quantidade de memória trocada (movida da memória do sistema para a troca) por segundo.so
: A quantidade de memória trocada (movida da troca para a memória do sistema) por segundo.
Se uma alta si
for observada, ela pode representar um sistema que está ficando sem memória do sistema e movendo páginas para troca (troca).
Io
A seção io tem duas colunas. Esses valores estão em blocos por segundo.
bi
: O número de blocos recebidos de um dispositivo de bloco (lê blocos por segundo) por segundo.bo
: O número de blocos enviados para um dispositivo de bloco (gravações por segundo) por segundo.
system
A seção do sistema tem duas colunas:
in
: O número de interrupções por segundo.cs
: O número de alternâncias de contexto por segundo.
Um alto número de interrupções por segundo pode indicar um sistema que está ocupado com dispositivos de hardware (por exemplo, operações de rede).
Um alto número de alternâncias de contexto pode indicar um sistema ocupado com muitos processos de execução curta. Não há um número bom ou ruim aqui.
cpu
A cpu
seção tem cinco colunas:
us
: Porcentagem de utilização do espaço do usuário.sy
: Porcentagem de utilização do sistema (espaço do kernel).id
: Porcentagem de utilização do tempo ocioso da CPU.wa
: Porcentagem de utilização do tempo ocioso da CPU aguardando processos com E/S.st
: porcentagem de utilização do tempo de CPU gasto atendendo a outras CPUs virtuais (não aplicável ao Azure).
Os valores são apresentados em porcentagens. Esses valores são os mesmos apresentados pelo mpstat
utilitário e servem para fornecer uma visão geral de alto nível do uso da CPU. Siga um processo semelhante ao mpstat ao revisar esses valores.
Uptime
O uptime
utilitário fornece uma ampla visão geral da carga do sistema com os valores médios de carga.
Como ler a saída do tempo de atividade
Aqui está um exemplo de saída de uptime
:
16:55:53 up 9 min, 2 users, load average: 9.26, 2.91, 1.18
O load average
exibe três números. Esses números correspondem à carga do sistema em 1
intervalos de , 5
e minutos 15
.
Para interpretar esses valores, é importante saber o número de CPUs disponíveis no sistema, que é obtido da saída anterior mpstat
. O valor depende do número total de CPUs, portanto, usando a mpstat
saída como exemplo, o sistema tem oito CPUs, e uma média de carga de 8
significaria que todos os núcleos são carregados a 100%.
Um valor de 4
significaria que metade das CPUs são carregadas a 100% (ou uma carga total de 50% para todas as CPUs). Na saída anterior, a média de carga é 9.26
, o que significa que a CPU está carregada em cerca de 115%.
Os 1m
intervalos , 5m
e 15m
ajudam a identificar se a carga está aumentando ou diminuindo ao longo do tempo.
Além disso, o nproc
comando pode ser usado para recuperar o número de CPUs.
Memória
Para memória, dois comandos podem recuperar detalhes de uso de memória.
livre
O free
comando mostra a utilização da memória do sistema.
Aqui está um exemplo de como executar free
:
-h
: Esta opção especifica o formato de saída para ser legível. Ele converte os tamanhos de memória de bytes em um formato mais legível (kilobytes, megabytes e gigabytes) e anexa rótulos de unidade apropriados (KB, MB e GB).
Como ler a saída livre
Aqui está um exemplo de saída de free
:
total used free shared buff/cache available
Mem: 31Gi 19Gi 12Gi 23Mi 87Mi 11Gi
Swap: 23Gi 0B 23Gi
Na saída, observe a memória do total
sistema versus a available
memória e a troca verstotal
.used
A memória disponível considera a memória alocada para o cache, que pode ser retornada aos aplicativos do usuário. Algum uso de swap é normal em kernels modernos, pois algumas páginas de memória usadas com pouca frequência podem ser movidas para swap.
trocar
O swapon
comando exibe onde a troca está configurada e as respectivas prioridades dos dispositivos ou arquivos de troca.
Aqui está um exemplo de como executar swapon
:
Aqui está um exemplo de saída de swapon
:
Filename Type Size Used Priority
/dev/zram0 partition 16G 0B 100
/mnt/swapfile file 8G 0B -2
Essas informações são importantes para verificar se a permuta está configurada em um local não ideal, por exemplo, em um disco de dados ou do sistema operacional. No quadro de referência do Azure, a troca deve ser configurada na unidade efêmera, pois fornece o melhor desempenho.
Principais considerações
- Lembre-se de que a memória é um recurso finito. Uma vez que a memória do sistema (RAM) e a troca estejam esgotadas, o assassino de memória insuficiente (assassino OOM) matará os processos.
- Verifique se a troca não está configurada em um disco de dados ou disco do sistema operacional, pois isso pode causar problemas com E/S devido a diferenças de latência. A troca deve ser configurada na unidade efêmera.
- Observe também que é comum ver valores livres próximos de zero na
free -h
saída. Esse comportamento se deve ao cache da página; O kernel libera essas páginas conforme necessário.
E/S
A E/S de disco é uma das áreas que o Azure mais sofre quando limitada, pois as latências para discos podem chegar a 100ms+
. Os comandos a seguir podem ajudar a identificar esses cenários.
IOSTAT
O iostat
utilitário faz parte do sysstat
pacote. Ele exibe as estatísticas de uso de cada dispositivo de bloco e ajuda a identificar problemas de desempenho relacionados ao bloco. Ele fornece detalhes sobre métricas como taxa de transferência, latência e tamanho da fila. Essas métricas ajudam a entender se a E/S de disco se torna um fator limitante.
Aqui está um exemplo de como executar iostat
:
-d
: Relatório de uso para cada dispositivo.-x
: Estatísticas estendidas.-t
: Exibe o carimbo de data/hora de cada relatório.-m
: Exibido em MB/s.1
: O primeiro argumento numérico indica com que frequência atualizar a exibição em segundos.2
: O segundo argumento numérico indica quantas vezes os dados são atualizados.
Como ler a saída iostat
Aqui está um exemplo de saída de iostat
:
Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9) 02/21/24 _x86_64_ (8 CPU)
02/21/24 16:55:50
Device r/s rMB/s rrqm/s %rrqm r_await rareq-sz w/s wMB/s wrqm/s %wrqm w_await wareq-sz d/s dMB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
sda 1.07 0.02 0.00 0.00 1.95 20.40 23.25 24.55 3.30 12.42 113.75 1081.06 0.26 537.75 0.26 49.83 0.03 2083250.04 0.00 0.00 2.65 2.42
sdb 16.99 0.67 0.36 2.05 2.00 40.47 65.26 0.44 1.55 2.32 1.32 6.92 0.00 0.00 0.00 0.00 0.00 0.00 30.56 1.30 0.16 7.16
zram0 0.51 0.00 0.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
A saída tem várias colunas que não são importantes (colunas extras devido à -x
opção). Alguns dos mais importantes são:
r/s
: Operações de leitura por segundo (IOPS).rMB/s
: Leia megabytes por segundo.r_await
: Latência de leitura em milissegundos.rareq-sz
: Tamanho médio da solicitação de leitura em kilobytes.w/s
: Operações de gravação por segundo (IOPS).wMB/s
: Escreva megabytes por segundo.w_await
: Latência de gravação em milissegundos.wareq-size
: Tamanho médio da solicitação de gravação em kilobytes.aqu-sz
: Tamanho médio da fila.
Principais considerações
- Procure
r/s
,w/s
(IOPS),rMB/s
, ewMB/s
, e verifique se esses valores estão dentro dos limites do disco fornecido. Se os valores estiverem próximos ou superiores aos limites, o disco será limitado, levando a uma alta latência. Essas informações também podem ser corroboradas com a%iowait
métrica dempstat
. - A latência é uma excelente métrica para verificar se o disco funciona conforme o esperado. Normalmente, menos do que
9ms
a latência esperada para PremiumSSD. Outras ofertas têm destinos de latência diferentes. - O tamanho da fila é um ótimo indicador de saturação. Normalmente, as solicitações são atendidas quase em tempo real e o número permanece próximo a um (já que a fila nunca cresce). Um número mais alto pode indicar saturação de disco (ou seja, solicitações enfileiradas). Não há um número bom ou ruim para essa métrica. Entender que qualquer número maior que um significa que as solicitações estão sendo enfileiradas ajuda a determinar se há saturação de disco.
lsblk
O lsblk
utilitário mostra os dispositivos de bloco conectados ao sistema. Embora não forneça métricas de desempenho, ele permite uma visão geral rápida de como esses dispositivos estão configurados e quais pontos de montagem estão sendo usados.
Aqui está um exemplo de como executar lsblk
:
Como ler a saída lsblk
Aqui está um exemplo de saída de lsblk
:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 300G 0 disk
└─sda1 8:1 0 300G 0 part /mnt
sdb 8:16 0 30G 0 disk
├─sdb1 8:17 0 1M 0 part
├─sdb2 8:18 0 200M 0 part /boot/efi
├─sdb3 8:19 0 1G 0 part /boot
└─sdb4 8:20 0 28.8G 0 part /
zram0 252:0 0 16G 0 disk [SWAP]
Principais considerações
- Procure onde os dispositivos estão montados.
- Verifique se a troca não está configurada dentro de um disco de dados ou disco do sistema operacional, se habilitada.
- Uma maneira fácil de correlacionar um dispositivo de bloco a um LUN no Azure é executando
ls -lr /dev/disk/azure
o .
Processo
A coleta de detalhes por processo ajuda a entender de onde vem a carga do sistema. O principal utilitário para coletar estatísticas de processo é pidstat
o , pois fornece detalhes sobre estatísticas de CPU, memória e E/S para cada processo. Por fim, um simples ps
classificar o processo pelo uso superior de CPU e memória completa as métricas.
Observação
Esses comandos exigem privilégios de root usados sudo
para mostrar detalhes de todos os processos em execução, não apenas os do usuário atual.
pidstat
O pidstat
utilitário também faz parte do sysstat
pacote. É como mpstat
ou iostat na medida em que exibe métricas para um determinado intervalo de tempo. Por padrão, pidstat
exibe métricas somente para processos com atividade.
Os argumentos a favor pidstat
são os mesmos que para outras sysstat
utilidades:
1
: O primeiro argumento numérico indica com que frequência atualizar a exibição em segundos.2
: O segundo argumento numérico indica quantas vezes os dados são atualizados.
Observação
A produção pode crescer consideravelmente se houver muitos processos com atividade.
Estatísticas da CPU do processo
Para coletar estatísticas da CPU do processo, execute pidstat
sem nenhuma opção:
Como ler a saída das estatísticas da CPU
Aqui está um exemplo de saída de pidstat
:
Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9) 02/21/24 _x86_64_ (8 CPU)
# Time UID PID %usr %system %guest %wait %CPU CPU Command
16:55:48 0 66 0.0% 1.0% 0.0% 0.0% 1.0% 0 kworker/u16:2-xfs-cil/sdb4
16:55:48 0 70 0.0% 1.0% 0.0% 0.0% 1.0% 0 kworker/u16:6-xfs-cil/sdb4
16:55:48 0 92 0.0% 1.0% 0.0% 0.0% 1.0% 3 kworker/3:1H-kblockd
16:55:48 0 308 0.0% 1.0% 0.0% 0.0% 1.0% 1 kworker/1:1H-kblockd
16:55:48 0 2068 0.0% 1.0% 0.0% 0.0% 1.0% 1 kworker/1:3-xfs-conv/sdb4
16:55:48 0 2181 63.1% 1.0% 0.0% 35.9% 64.1% 5 stress-ng-cpu
16:55:48 0 2182 28.2% 0.0% 0.0% 70.9% 28.2% 6 stress-ng-cpu
16:55:48 0 2183 28.2% 0.0% 0.0% 69.9% 28.2% 7 stress-ng-cpu
16:55:48 0 2184 62.1% 0.0% 0.0% 36.9% 62.1% 0 stress-ng-cpu
16:55:48 0 2185 43.7% 0.0% 0.0% 54.4% 43.7% 2 stress-ng-cpu
16:55:48 0 2186 30.1% 0.0% 0.0% 68.0% 30.1% 7 stress-ng-cpu
16:55:48 0 2187 64.1% 0.0% 0.0% 34.0% 64.1% 3 stress-ng-cpu
O comando exibe o uso de , %system
, %guest
(não aplicável ao Azure) %wait
e o uso total %CPU
de %usr
cada processo.
Principais considerações
- Procure processos com porcentagens altas
%wait
(iowait), pois isso pode indicar processos que estão bloqueados aguardando E/S, o que também pode indicar saturação de disco. - Verifique se nenhum processo único consome 100% da CPU, pois isso pode indicar um aplicativo de thread único.
Estatísticas de memória do processo
Para coletar estatísticas de memória do processo, use a -r
opção:
Como ler a saída de estatísticas de memória
Aqui está um exemplo de saída de pidstat
:
Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9) 02/21/24 _x86_64_ (8 CPU)
# Time UID PID minflt/s majflt/s VSZ RSS %MEM Command
16:55:49 0 2199 119244.12 0.00 13.6G 7.4G 23.5% stress-ng-vm
16:55:49 0 2200 392911.76 0.00 13.6G 9.3G 29.7% stress-ng-vm
16:55:49 0 2211 1129.41 0.00 72.3M 3.2M 0.0% stress-ng-iomix
16:55:49 0 2220 0.98 0.00 71.8M 2.4M 0.0% stress-ng-iomix
16:55:49 0 2239 1129.41 0.00 72.3M 3.2M 0.0% stress-ng-iomix
16:55:49 0 2240 1129.41 0.00 72.3M 3.2M 0.0% stress-ng-iomix
16:55:49 0 2256 0.98 0.00 71.8M 2.4M 0.0% stress-ng-iomix
16:55:49 0 2265 1129.41 0.00 72.3M 3.2M 0.0% stress-ng-iomix
As métricas coletadas são:
minflt/s
: Pequenas falhas por segundo. Essa métrica indica o número de páginas carregadas da memória do sistema (RAM).mjflt/s
: Falhas graves por segundo. Essa métrica indica o número de páginas carregadas do disco (SWAP).VSZ
: Memória virtual usada em bytes.RSS
: Memória residente usada (memória alocada real) em bytes.%MEM
: A porcentagem da memória total usada.Command
: O nome do processo.
Principais considerações
- Procure falhas graves por segundo, pois esse valor indicaria um processo que está trocando páginas de ou para o disco. Esse comportamento pode indicar esgotamento de memória e levar a
OOM
eventos ou degradação de desempenho devido a trocas mais lentas. - Verifique se um único processo não consome 100% da memória disponível. Esse comportamento pode indicar um vazamento de memória.
Dica
A --human
opção pode ser usada para exibir números em um formato legível por humanos (ou seja, KB, MB e GB).
Estatísticas de E/S do processo
Para coletar estatísticas de E/S do processo, use a -d
opção:
Aqui está um exemplo de saída de pidstat
:
# Time UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
16:55:50 0 86 55.4k 0.0B 0.0B 0 kworker/1:1-xfs-conv/sdb4
16:55:50 0 2201 4.0k 194.1k 0.0B 0 stress-ng-iomix
16:55:50 0 2202 0.0B 99.0k 0.0B 0 stress-ng-iomix
16:55:50 0 2203 0.0B 23.8k 0.0B 0 stress-ng-iomix
16:55:50 0 2204 0.0B 15.8k 0.0B 0 stress-ng-iomix
16:55:50 0 2212 0.0B 103.0k 0.0B 0 stress-ng-iomix
16:55:50 0 2213 4.0k 99.0k 0.0B 0 stress-ng-iomix
16:55:50 0 2215 0.0B 178.2k 0.0B 0 stress-ng-iomix
16:55:50 0 2216 7.9k 237.6k 0.0B 0 stress-ng-iomix
16:55:50 0 2218 0.0B 95.0k 0.0B 0 stress-ng-iomix
16:55:50 0 2221 0.0B 15.8k 0.0B 0 stress-ng-iomix
As métricas coletadas são:
kB_rd/s
: Ler kilobytes por segundo.kB_wr/s
: Escreva kilobytes por segundo.Command
: O nome do processo.
Principais considerações
- Procure processos únicos com altas taxas de leitura/gravação por segundo. Essas informações são mais diretrizes para processos com E/S do que para identificar problemas.
Dica
A --human
opção pode ser usada para exibir números em um formato legível por humanos (ou seja, KB, MB e GB).
Ps
Por fim, o comando exibe os processos do ps
sistema e pode ser classificado por CPU ou memória.
Para classificar %CPU
e obter os 10 principais processos:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2190 94.8 0.0 73524 5588 pts/1 R+ 16:55 0:14 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2200 56.8 43.1 14248092 14175632 pts/1 R+ 16:55 0:08 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2192 50.6 0.0 73524 5836 pts/1 R+ 16:55 0:07 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2184 50.4 0.0 73524 5836 pts/1 R+ 16:55 0:07 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2182 44.3 0.0 73524 5808 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2187 43.4 0.0 73524 5708 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2199 42.9 33.0 14248092 10845272 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2186 42.0 0.0 73524 5836 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2191 41.2 0.0 73524 5592 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
Para classificar %MEM
e obter os 10 principais processos:
PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2200 57.0 43.1 14248092 14175632 pts/1 R+ 16:55 0:08 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 2199 43.0 33.0 14248092 10871144 pts/1 R+ 16:55 0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root 1231 0.2 0.1 336308 33764 ? Sl 16:46 0:01 /usr/bin/python3 -u bin/WALinuxAgent-2.9.1.1-py3.8.egg -run-exthandlers
root 835 0.0 0.0 127076 24860 ? Ssl 16:46 0:00 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
root 1199 0.0 0.0 30164 15600 ? Ss 16:46 0:00 /usr/bin/python3 -u /usr/sbin/waagent -daemon
root 1 0.2 0.0 173208 12356 ? Ss 16:46 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 31
root 966 0.0 0.0 3102460 10936 ? Sl 16:46 0:00 /var/lib/waagent/Microsoft.GuestConfiguration.ConfigurationforLinux-1.26.60/GCAgent/GC/gc_linux_service
panzer 1803 0.0 0.0 22360 8220 ? Ss 16:49 0:00 /usr/lib/systemd/systemd --user
root 2180 0.0 0.0 73524 6968 pts/1 SL+ 16:55 0:00 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
Consolidar relatórios
O script Bash a seguir pode reunir todos os detalhes em uma única execução e anexar a saída a um arquivo para referência futura:
mpstat -P ALL 1 2 && vmstat -w 1 5 && uptime && free -h && swapon && iostat -dxtm 1 1 && lsblk && ls -l /dev/disk/azure && pidstat 1 1 -h --human && pidstat -r 1 1 -h --human && pidstat -d 1 1 -h --human && ps aux --sort=-%cpu | head -20 && ps aux --sort=-%mem | head -20
Para executar, crie um arquivo com o conteúdo anterior, adicione execute
permissões executando chmod +x gather.sh
o e execute com sudo ./gather.sh
o .
Esse script salva a saída dos comandos em um arquivo localizado no mesmo diretório em que o script foi chamado.
Além disso, todos os comandos nos códigos de bloco do Bash abordados neste documento podem ser executados por meio da CLI do Azure usando a run-command
extensão e analisando a saída para jq
obter saídas semelhantes à execução dos comandos localmente.
az vm run-command invoke -g $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --command-id RunShellScript --scripts "ls -l /dev/disk/azure" | jq -r '.value[0].message'
Aviso de isenção de responsabilidade para informações de terceiros
Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.