From: Nikolay Shirokovskiy Date: Fri, 26 Jun 2015 11:24:00 +0000 (+0300) Subject: vz: add vcpu statistics X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b2f73ee22e6ac374d8bb4341d01e91ffd0fc277f;p=libvirt.git vz: add vcpu statistics Comments. Replace vzDomObjFromDomain/virObjectUnlock pair to vzDomObjFromDomainRef/virDomainObjEndAPI as we use prlsdkGetStatsParam. See previous statistics comments. Signed-off-by: Nikolay Shirokovskiy --- diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index ee361f7672..b809c35cf8 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -826,7 +826,7 @@ vzDomainGetVcpus(virDomainPtr domain, int v, maxcpu, hostcpus; int ret = -1; - if (!(privdom = vzDomObjFromDomain(domain))) + if (!(privdom = vzDomObjFromDomainRef(domain))) goto cleanup; if (!virDomainObjIsActive(privdom)) { @@ -849,6 +849,8 @@ vzDomainGetVcpus(virDomainPtr domain, for (i = 0; i < maxinfo; i++) { info[i].number = i; info[i].state = VIR_VCPU_RUNNING; + if (prlsdkGetVcpuStats(privdom, i, &info[i].cpuTime) < 0) + goto cleanup; } } if (cpumaps != NULL) { @@ -871,7 +873,7 @@ vzDomainGetVcpus(virDomainPtr domain, cleanup: if (privdom) - virObjectUnlock(privdom); + virDomainObjEndAPI(&privdom); return ret; } diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index 32491f232a..74f0488fa0 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -3862,3 +3862,22 @@ prlsdkGetNetStats(virDomainObjPtr dom, const char *path, return ret; } + +int +prlsdkGetVcpuStats(virDomainObjPtr dom, int idx, unsigned long long *vtime) +{ + char *name = NULL; + long long ptime = 0; + int ret = -1; + + if (virAsprintf(&name, "guest.vcpu%u.time", (unsigned int)idx) < 0) + goto cleanup; + if (prlsdkGetStatsParam(dom, name, &ptime) < 0) + goto cleanup; + *vtime = ptime == -1 ? 0 : ptime; + ret = 0; + + cleanup: + VIR_FREE(name); + return ret; +} diff --git a/src/vz/vz_sdk.h b/src/vz/vz_sdk.h index 53fe21fb00..ca38c591bc 100644 --- a/src/vz/vz_sdk.h +++ b/src/vz/vz_sdk.h @@ -72,3 +72,5 @@ int prlsdkDetachNet(virDomainObjPtr dom, vzConnPtr privconn, virDomainNetDefPtr net); int prlsdkGetNetStats(virDomainObjPtr dom, const char *path, virDomainInterfaceStatsPtr stats); +int +prlsdkGetVcpuStats(virDomainObjPtr dom, int idx, unsigned long long *time);