vmstat na máquina virtual e grandes valores

1

Oi eu estou usando vmstat para acompanhar o desempenho da máquina durante alguns testes ( jmeter ). Esta é uma máquina virtual em execução em uma grande máquina, onde muitas outras máquinas virtuais são instaladas (cerca de 20 máquinas virtuais).

Estou usando as seguintes versões de software:

$ vmstat -V
procps version 3.2.7  

$ uname -a
 Linux cmbpm 2.6.32-042stab044.11 #1 SMP Wed Dec 14 16:02:00 MSK 2011 x86_64 x86_64 x86_64 GNU/Linux

O problema é com os resultados que recebo, aqui está uma amostra (converti espaços em guias únicas para facilitar o processamento de dados):

procs   -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd    free    buff    cache   si  so  bi  bo  in  cs  us  sy  id  wa  st
 0  0   1506720 6152768 0   824836  1   0   3   2   0   0   0   0   94  6   0
 0  0   1506720 6170744 0   804392  60  64  14  16  0   122651  0   0   98  2   0
 0  1   1506720 6168328 0   801744  145 8   300 52  0   117308  0   0   0   100 0
 0  0   1505688 6173360 0   806852  233 13  1135    478 0   109158  1   0   387 1171860851  0
 0  0   1505172 6168988 0   810140  380 0   0   513 0   117875  0   0   97  3   0

O problema é que alguns valores são muito maiores do que deveriam ser. Os valores percentuais do tempo da CPU ( -----cpu------ seção) às vezes excedem em muito o valor de 100%. Especialmente a coluna wa (esperando por dados) é problemática (o valor 1171860851 é extremamente estranho). Substituir esses valores enormes por zero dá resultados razoáveis.

Minha pergunta é por que ela fornece valores incorretos e pode ser consertada de alguma forma?
Eu suspeito que a virtualização da máquina seja um problema aqui.

    
por Marek R 04.02.2013 / 11:19

1 resposta

2

Os suspeitos do costume seriam:

  1. vmstat pode estar falhando ao lidar com quebra de contadores, contadores não devem quebrar com freqüência, e deve ocorrer mais em user / system / idle do que iowait (para cargas normais)
  2. vmstat está falhando ao analisar /proc/stat , isso pode ser devido direta ou indiretamente a um tipo de dados de 64 bits, estouro ou análise incorreta devido a campos grandes / ausentes / mesclados
  3. timewarp está inclinando os cálculos

O kernel mantém o controle do usuário / nice / system / etc como contadores (tipicamente 100 / CPU), vmstat e outros programas calculam médias baseadas em deltas de tempo, por exemplo. 5 segundos para vmstat 5 . Tempo exato pode ser um problema em um ambiente virtual, embora não com um sintoma específico como descrito ( vmstat calcula esses números usando o mesmo timestamp)

Tendo verificado procps / libproc, ele lê /proc/stat como inteiros long-long e calcula usando floats de precisão dupla - não vejo nenhum problema lá.

Você está executando um kernel OpenVZ, você deve verificar se /proc/stats está bem formado, pode ser este bug: link Você pode ter mais sorte ao analisar o /proc/vz/vestat : link

    
por 04.02.2013 / 19:52