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
당신은 아마 serverfault.com에 더 나은 답변을받을거야, 그들은 SNMP에 대해 수 있습니다. 행운을 빕니다. –
확인해 보겠습니다. 감사합니다 @ AndersR.Bystrup! – user3752288
KVM 가상화를 사용하면 모든 가상 머신은 호스트 프로세스 목록에있는 프로세스 일 뿐이므로 최상위 또는 다른 "표준"도구가 해당 프로세스/VM에 대한 CPU/메모리 사용량을 알려줍니다. 그래프를 원한다면'nmon'이 시작하기에 좋은 장소 일 수 있습니다. – twalberg