]> xenbits.xensource.com Git - libvirt.git/commitdiff
vz: add vcpu statistics
authorNikolay Shirokovskiy <nshirokovskiy@parallels.com>
Fri, 26 Jun 2015 11:24:00 +0000 (14:24 +0300)
committerDmitry Guryanov <dguryanov@parallels.com>
Fri, 26 Jun 2015 13:39:28 +0000 (16:39 +0300)
Comments.

Replace vzDomObjFromDomain/virObjectUnlock pair
to vzDomObjFromDomainRef/virDomainObjEndAPI as we
use prlsdkGetStatsParam. See previous statistics
comments.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
src/vz/vz_driver.c
src/vz/vz_sdk.c
src/vz/vz_sdk.h

index ee361f76727027187e59731b04d622ac5da0d64d..b809c35cf87bebf1d813828a7cfa9540a8e5ce80 100644 (file)
@@ -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;
 }
 
index 32491f232a7cdcad21ff6990ce8ee295f1ba2e59..74f0488fa07c114fc31fb89ab89ac63d94dd0661 100644 (file)
@@ -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;
+}
index 53fe21fb001514a9c42b40409944fd30b956f434..ca38c591bcf320d8bda8bc3c1f1a430c69d8e8dc 100644 (file)
@@ -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);