[libvirt] [PATCH v2 1/2] qemu: expand domain memory statistics with 'usable'

Derbyshev Dmitriy dderbyshev at virtuozzo.com
Tue May 31 17:14:22 UTC 2016


From: Derbyshev Dmitry <dderbyshev at virtuozzo.com>

'memtotal' field in virtio drivers and qemu corresponds to 'available' in libvirt.
Because of that, 'available' is renamed into 'usable'.
Balloon statistics are not reported in hrf, so no modifications are made in qemu_monitor_text.c.

Signed-off-by: Derbyshev Dmitry <dderbyshev at virtuozzo.com>
---
 include/libvirt/libvirt-domain.h | 8 +++++++-
 src/libvirt-domain.c             | 3 +++
 src/qemu/qemu_monitor_json.c     | 2 ++
 tools/virsh-domain-monitor.c     | 2 ++
 4 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index e1d9a0d..b65dd33 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -604,10 +604,16 @@ typedef enum {
     VIR_DOMAIN_MEMORY_STAT_RSS             = 7,
 
     /*
+     * How big the balloon can be inflated without pushing the guest system
+     * to swap, corresponds to 'Available' in /proc/meminfo
+     */
+    VIR_DOMAIN_MEMORY_STAT_USABLE          = 8,
+
+    /*
      * The number of statistics supported by this version of the interface.
      * To add new statistics, add them to the enum and increase this value.
      */
-    VIR_DOMAIN_MEMORY_STAT_NR              = 8,
+    VIR_DOMAIN_MEMORY_STAT_NR              = 9,
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_DOMAIN_MEMORY_STAT_LAST = VIR_DOMAIN_MEMORY_STAT_NR
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index 3e144b6..6ef53a6 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -5986,6 +5986,9 @@ virDomainGetInterfaceParameters(virDomainPtr domain,
  *     The amount of memory which is not being used for any purpose (in kb).
  * VIR_DOMAIN_MEMORY_STAT_AVAILABLE:
  *     The total amount of memory available to the domain's OS (in kb).
+ * VIR_DOMAIN_MEMORY_STAT_USABLE:
+ *     How big the balloon can be inflated without pushing the guest system
+ *     to swap, corresponds to 'Available' in /proc/meminfo
  * VIR_DOMAIN_MEMORY_STAT_ACTUAL_BALLOON:
  *     Current balloon value (in kb).
  *
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index e767414..aa9762f 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -1688,6 +1688,8 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
                       VIR_DOMAIN_MEMORY_STAT_UNUSED, 1024);
     GET_BALLOON_STATS("stat-total-memory",
                       VIR_DOMAIN_MEMORY_STAT_AVAILABLE, 1024);
+    GET_BALLOON_STATS("available",
+                      VIR_DOMAIN_MEMORY_STAT_USABLE, 1024);
 
 
  cleanup:
diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
index 0a93949..1921ff5 100644
--- a/tools/virsh-domain-monitor.c
+++ b/tools/virsh-domain-monitor.c
@@ -369,6 +369,8 @@ cmdDomMemStat(vshControl *ctl, const vshCmd *cmd)
             vshPrint(ctl, "unused %llu\n", stats[i].val);
         if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_AVAILABLE)
             vshPrint(ctl, "available %llu\n", stats[i].val);
+        if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_USABLE)
+            vshPrint(ctl, "usable %llu\n", stats[i].val);
         if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_ACTUAL_BALLOON)
             vshPrint(ctl, "actual %llu\n", stats[i].val);
         if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_RSS)
-- 
1.9.5.msysgit.0




More information about the libvir-list mailing list