VMware 및 Hyper-V 하이퍼바이저에서 CPU %steal 측정

VMware 및 Hyper-V 하이퍼바이저에서 CPU %steal 측정

Xen Linux 게스트의 경우 %stealtop 및 기타 유틸리티를 통해 시간을 쉽게 사용할 수 있습니다.

ESXi 또는 Hyper-V와 같은 Xen이 아닌 하이퍼바이저를 실행할 때 Linux 게스트 내에서 이 메트릭과 관련 메트릭을 얻을 수 있습니까?

Windows 게스트의 경우 VMware와 Microsoft는 모두 perfmon 카운터를 제공합니다. 예: VM웨어 성능

top그러나 Centos 6.4에서는 바닐라를 통해 이러한 기능이 노출되지 않는 것 같습니다 .

답변1

VMware 게스트 내에서 이러한 성능 카운터를 얻는 유일한 방법은 vmware-tools와 함께 제공되는 VMGuestLib SDK를 사용하는 것입니다.

저는 이 라이브러리에 대해 python-vmguestlib라는 Python 래퍼와 이러한 카운터에 액세스할 수 있는 도구 vmguest-stats를 작성했습니다. 그리고 이제 이러한 성능 카운터를 다른 시스템 리소스와 연관시키는 세 가지 Dstat 플러그인이 있습니다. 다음과 같이 간단합니다.

dstat -c –vm-cpu -m –vm-mem –vm-mem-adv

Python 래퍼, vmguest-stats 도구 및 Dstat는 다음 위치에서 찾을 수 있습니다.

피드백과 개선을 환영합니다!

답변2

작업 중인 vSphere 클러스터가 오버로드되었지만 일반적인 Zabbix 측정 도구는 CPU 도용 시간을 표시하지 않았습니다. Dag에게 정말 감사드립니다. 저는 그의 테스트 프로그램을 가져와 다음과 같이 도용 비율을 인쇄하는 스크립트를 작성했습니다.

#!/usr/bin/python

import sys, os, time
sys.path.append(os.path.join('/root/dagwieers/vmguestlib/'))

from vmguestlib import VMGuestLib

gl = VMGuestLib()

gl.UpdateInfo()
stolen_ms_1 = gl.GetCpuStolenMs()

time.sleep(1)

gl.UpdateInfo()
stolen_ms_2 = gl.GetCpuStolenMs()

# print percentage of stolen time
print '%d' % ((stolen_ms_2 - stolen_ms_1) / 10)

gl.CloseHandle()

그것은 내가 생각했던 것을 확인시켜 주었습니다. 나는 종종 내 CPU 시간의 75%를 잃어버리고 있습니다!

답변3

내가 이해하는 바와 같이, 총 도난 밀리초를 계산하고 있습니다.

이 시점에서 당신은 도둑질의 영향에 대해 거의 알지 못합니다.

도난당한 밀리초를 VM 수로 나누어 계산하면 VM당 도난당한 밀리초를 얻을 수 있습니다.

그런 다음 도난당한 밀리초를 도난당한 값이 적용되는 실제 밀리초(도난된 밀리초를 계산하는 간격)로 나누면 VM이 도난당한 시간의 비율(평균)을 얻을 수 있습니다.

따라서 계산은 VM당 도난율 = 도난당함 / #VMsOn / 간격이 됩니다.

관련 정보