This function add halt polling time interface in domstats. So that
we can use command 'virsh domstats VM' to get the data if system
support.
Signed-off-by: Yang Fei <yangfei85(a)huawei.com>
---
src/libvirt-domain.c | 7 +++++++
src/qemu/qemu_driver.c | 20 ++++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index 750e32f0ca..8e58c1b43f 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -11625,6 +11625,13 @@ virConnectGetDomainCapabilities(virConnectPtr conn,
* "cpu.user" - user cpu time spent in nanoseconds as unsigned long long.
* "cpu.system" - system cpu time spent in nanoseconds as unsigned long
* long.
+ * "haltpollsuccess.time" - halt-polling cpu usage about the VCPU polled
+ * until a virtual interrupt was delivered in
+ * nanoseconds as unsigned long long.
+ * "haltpollfail.time" - halt-polling cpu usage about the VCPU had to
schedule
+ * out (either because the maximum poll time was reached
+ * or it needed to yield the CPU) in nanoseconds as
+ * unsigned long long.
* "cpu.cache.monitor.count" - the number of cache monitors for this
domain
* "cpu.cache.monitor.<num>.name" - the name of cache monitor
<num>
* "cpu.cache.monitor.<num>.vcpus" - vcpu list of cache monitor
<num>
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 235f575901..adb4628558 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -17839,6 +17839,23 @@ qemuDomainGetStatsCpuCgroup(virDomainObj *dom,
return 0;
}
+static int
+qemuDomainGetStatsCpuHaltPollTime(virDomainObj *dom,
+ virTypedParamList *params)
+{
+ unsigned long long haltPollSuccess = 0;
+ unsigned long long haltPollFail = 0;
+ pid_t pid = dom->pid;
+
+ if (virGetCpuHaltPollTime(pid, &haltPollSuccess, &haltPollFail) < 0)
+ return 0;
+
+ if (virTypedParamListAddULLong(params, haltPollSuccess,
"haltpollsuccess.time") < 0 ||
+ virTypedParamListAddULLong(params, haltPollFail, "haltpollfail.time")
< 0)
+ return -1;
+
+ return 0;
+}
static int
qemuDomainGetStatsCpu(virQEMUDriver *driver,
@@ -17852,6 +17869,9 @@ qemuDomainGetStatsCpu(virQEMUDriver *driver,
if (qemuDomainGetStatsCpuCache(driver, dom, params) < 0)
return -1;
+ if (qemuDomainGetStatsCpuHaltPollTime(dom, params) < 0)
+ return -1;
+
return 0;
}
--
2.23.0