Re: [libvirt] [PATCH v5 1/3] qemu: expand domain memory statistics with 'usable'

2016-06-21 Thread John Ferlan


On 06/16/2016 02:38 PM, Maxim Nestratov wrote:
> From: Derbyshev Dmitry 
> 
> Currently 'memtotal' in virtio drivers and qemu corresponds
> to 'available' in libvirt. Because of that we introduce libvirt 'usable'
> parameter, which maps to 'stat-available-memory' balloon statistics.
> As balloon statistics isn't reported in hmp, so no modification is made
> in qemu_monitor_text.c.
> 
> Signed-off-by: Derbyshev Dmitry 
> ---
>  include/libvirt/libvirt-domain.h | 8 +++-
>  src/libvirt-domain.c | 3 +++
>  src/qemu/qemu_monitor_json.c | 4 
>  tools/virsh-domain-monitor.c | 2 ++
>  4 files changed, 16 insertions(+), 1 deletion(-)
> 

Existing, but sure would be nice to have a brief description in
virsh.pod of the various statistics to be displayed. Adding that would
mean generating a patch before this to "catch up" and describe the
current stats, then adding this new stat. That way when someone adds in
the future a reviewer may actually catch that the new stat isn't
described. The format could be similar to domblkstat and the text could
just borrow liberally from libvirt-domain.h

ACK for what's here though.

John

> diff --git a/include/libvirt/libvirt-domain.h 
> b/include/libvirt/libvirt-domain.h
> index cba4fa5..1554198 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 73ae369..fabd4a6 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 380ddab..d10e758 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -1719,7 +1719,11 @@ 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("stat-available-memory",
> +  VIR_DOMAIN_MEMORY_STAT_USABLE, 1024);
> +
>  ret = got;
> +
>   cleanup:
>  virJSONValueFree(cmd);
>  virJSONValueFree(reply);
> 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)
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH v5 1/3] qemu: expand domain memory statistics with 'usable'

2016-06-16 Thread Maxim Nestratov
From: Derbyshev Dmitry 

Currently 'memtotal' in virtio drivers and qemu corresponds
to 'available' in libvirt. Because of that we introduce libvirt 'usable'
parameter, which maps to 'stat-available-memory' balloon statistics.
As balloon statistics isn't reported in hmp, so no modification is made
in qemu_monitor_text.c.

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

diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index cba4fa5..1554198 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 73ae369..fabd4a6 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 380ddab..d10e758 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -1719,7 +1719,11 @@ 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("stat-available-memory",
+  VIR_DOMAIN_MEMORY_STAT_USABLE, 1024);
+
 ret = got;
+
  cleanup:
 virJSONValueFree(cmd);
 virJSONValueFree(reply);
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)
-- 
2.4.3

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list