2014-06-18 1 views
0

SSH를 통해 게스트에 연결하지 않고 KVM에서 VM의 CPU 사용 및 메모리 사용을 얻을 수있는 방법이 있습니까? 내 말은, Virtual Machine Manager가 CPU 사용량 (그래프)을 얻는 방법은 무엇입니까? 나는 CPU 사용과 메모리의 비율도 필요로한다. 누구든지 libvirt를 통해 kvm과 통신하는 방법을 알고 있습니까? SSH가 없으면 CPU 사용량과 메모리를 최대한 확보해야합니다.SSH (KVM)를 사용하지 않고 VM의 CPU 사용량을 얻으십시오

시나리오 : 로드 밸런서 (호스트) + 3 서버 (VM)가 포함 된 설정을 작성하려고하는데 세 서버의 CPU 사용량을 알려주므로 다른 서버를 프로비저닝해야 할 경우, 언제 알 수있을거야.

도움 주셔서 감사합니다. 정말 감사합니다.

+0

당신은 아마 serverfault.com에 더 나은 답변을받을거야, 그들은 SNMP에 대해 수 있습니다. 행운을 빕니다. –

+0

확인해 보겠습니다. 감사합니다 @ AndersR.Bystrup! – user3752288

+0

KVM 가상화를 사용하면 모든 가상 머신은 호스트 프로세스 목록에있는 프로세스 일 뿐이므로 최상위 또는 다른 "표준"도구가 해당 프로세스/VM에 대한 CPU/메모리 사용량을 알려줍니다. 그래프를 원한다면'nmon'이 시작하기에 좋은 장소 일 수 있습니다. – twalberg

답변

2

virDomainGetInfo 기능을 libvirt에서 사용하면 도메인에서 사용하는 메모리 및 CPU 시간에 대한 정보를 얻을 수 있습니다.

여기 아주 간단한 예입니다 :

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

#include <libvirt/libvirt.h> 

int main(int argc, char **argv) { 
    virConnectPtr c; 
    virDomainPtr d; 
    virDomainInfo di; 
    int res; 
    int domid; 

    domid = atoi(argv[1]); 

    c = virConnectOpen(NULL); 
    d = virDomainLookupByID(c, domid); 
    res = virDomainGetInfo(d, &di); 

    printf("res = %d\n", res); 
    printf("memory used = %ld\n", di.memory); 
    printf("cpu time used = %ld\n", di.cpuTime); 
} 

UPDATE

나는 당신이 그것을 정확하게 이러한 기능을 사용하는 예를 들어, virt-manager, 당신은 발견 할 것이다,의 소스를 조사하면 확신 해요 귀하의 질문에서 참조하는 다양한 그래프를 생성하십시오. cpu "usage"는 시간이 지남에 따라 "cpu time"값이 얼마나 변화 하는지를 봄으로써 알 수 있습니다.

도메인이 사용하는 호스트 CPU의 %와 같은 것을 찾고 있다면 ps을 사용할 수 있습니다. 즉, 해당 qemu 프로세스가 19650 인 경우, 당신은 실행할 수 있습니다 :

$ ps -p 19650 -o pid,%cpu 
    PID %CPU 
19650 10.2 
+0

"virsh cpu-stats"명령을 사용하여 CPU 시간을 알 수 있습니다. CPU 사용량이 필요합니다. 내가 CPU 사용량과 메모리 사용량을 얻을 수 있도록 사용할 수있는 libvirt 함수가 있습니까? :) 고마워요 @ 라르 스크! – user3752288

+0

이 대답은 CPU 및 메모리 사용을 결정하는 libvirt 함수를 제공합니다 *. 게스트가 소비 한 % 호스트 CPU를 얻기위한 대체 방법을 포함하도록 업데이트했습니다. 'virsh' 명령에 대해 묻는다면 프로그래밍 문제가 아니며 [수퍼 유저] (http://superuser.com/) 또는 [serverfault] (http://serverfault.com/)에서 질문해야합니다. – larsks

+0

오케이. 모든 것이 이제 분명합니다. 우리 고문과 상담을 마쳤습니다. 당신은 정확하다, 나는 virsh가 정말로 프로그래밍이 아니라고 생각한다. 내가 틀렸다면 virsh가 libvirt를 사용하여 cpu 시간, 메모리 사용량 등을 얻는다. 그리고 내 주요한 문제는 libvirt를 사용하여 게스트 VM의 CPU 사용량을 어떻게 얻습니까? libvirt API를 사용하여 KVM이 표시하는 것과 똑같은 프로그램을 만들 수 있습니까 (저는 그래프를 참조하고 있습니다)? 아니면 virsh에 명령을 내릴 수 있습니까? 내 질문이 같아도 미안 하네, 나는 아직도 모든 것을 이해할 수 없었다. 어쨌든, 고맙습니다. – user3752288

관련 문제