vmstat 및 가상 머신의 큰 값

vmstat 및 가상 머신의 큰 값

vmstat안녕하세요. 일부 테스트( ) 중에 기계 성능을 추적하기 위해 .을(를 ) 사용하고 있습니다 jmeter. 이는 다른 많은 가상 머신(약 20개 가상 머신)이 설치된 대규모 머신에서 실행되는 가상 머신입니다.

다음 소프트웨어 버전을 사용하고 있습니다.

$ 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

문제는 내가 얻은 결과에 있습니다. 예는 다음과 같습니다(더 쉬운 데이터 처리를 위해 공백을 단일 탭으로 변환했습니다).

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

문제는 일부 값이 원래보다 훨씬 크다는 것입니다. CPU 시간의 백분율 값( -----cpu------분수)이 100%를 크게 초과하는 경우가 있습니다. 특히 컬럼 wa(Waiting for data)이 문제가 됩니다(값 1171860851이 매우 이상합니다). 이러한 거대한 값을 0으로 바꾸면 합리적인 결과를 얻을 수 있습니다.

내 질문은 왜 잘못된 값을 제공하고 어떻게든 고칠 수 있습니까?
여기서는 머신 가상화가 문제인 것 같습니다.

답변1

일반적인 용의자는 다음과 같습니다.

  1. vmstat카운터 래핑은 처리되지 않을 수 있으며, 카운터는 자주 래핑되어서는 안 되며 iowait(정상 로드의 경우)보다 사용자/시스템/유휴 상태에서 더 많이 발생해야 합니다.
  2. vmstat구문 분석할 수 없습니다 /proc/stat. 이는 64비트 데이터 유형으로 인해 직간접적으로 발생하거나 넓은 필드/누락/병합된 필드로 인한 오버플로 또는 구문 분석 오류 때문일 수 있습니다.
  3. 시간 왜곡으로 인해 계산이 왜곡됨

커널은 user/nice/system/etc를 카운터(보통 100/CPU)로 추적하는 vmstat반면, 다른 프로그램은 시간 증분(예: 5초)을 기준으로 평균을 계산합니다 vmstat 5. 설명된 특정 증상은 없지만 정확한 타이밍은 가상 환경에서 문제가 될 수 있습니다( vmstat동일한 타임스탬프를 사용하여 이 숫자를 계산합니다).

/proc/statprocps/libproc를 확인한 후 긴 정수로 읽고 계산에 배정밀도 부동 소수점을 사용합니다. 아무런 문제도 볼 수 없습니다.

OpenVZ 커널을 실행 중입니다. /proc/stats형식이 올바른지 확인해야 합니다. 아마도 다음 오류가 발생할 수 있습니다.https://bugzilla.openvz.org/show_bug.cgi?id=1376 구문 분석을 수행하면 더 나은 행운을 얻을 수 있습니다 /proc/vz/vestat.http://wiki.openvz.org/Vestat

관련 정보