pcp
[Top] [All Lists]

libvirt pmda: add new balloon statistics

To: pcp developers <pcp@xxxxxxxxxxx>
Subject: libvirt pmda: add new balloon statistics
From: Marko Myllynen <myllynen@xxxxxxxxxx>
Date: Tue, 11 Oct 2016 22:40:46 +0300
Delivered-to: pcp@xxxxxxxxxxx
Organization: Red Hat
Reply-to: Marko Myllynen <myllynen@xxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0
Hi,

Some new balloon statistics are available with libvirt 2.3.

There's an unfortunate workaround needed for "last-update",
I sent a plea to libvirt list to stick with underscores in
the future:

https://www.redhat.com/archives/libvir-list/2016-October/msg00506.html

AFAICS libvirt 2.3 API coverage is now complete.

---
 src/pmdas/libvirt/pmdalibvirt.python | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/pmdas/libvirt/pmdalibvirt.python 
b/src/pmdas/libvirt/pmdalibvirt.python
index 56f54f8..289202f 100755
--- a/src/pmdas/libvirt/pmdalibvirt.python
+++ b/src/pmdas/libvirt/pmdalibvirt.python
@@ -71,6 +71,7 @@ class LibvirtPMDA(PMDA):
         units_kbyte = pmUnits(1, 0, 0, PM_SPACE_KBYTE, 0, 0)
         units_bpers = pmUnits(1,-1, 0, PM_SPACE_BYTE, PM_TIME_SEC, 0)
         units_nsecs = pmUnits(0, 1, 0, 0, PM_TIME_NSEC, 0)
+        units_secs  = pmUnits(0, 1, 0, 0, PM_TIME_SEC, 0)
 
         self.hv_indom = PM_INDOM_NULL
 
@@ -165,8 +166,17 @@ class LibvirtPMDA(PMDA):
         self.vm_balloonstats = [
             # Name - empty - type - semantics - units - help
             # See libvirt.git/src/libvirt-domain.c
-            [ 'domstats.balloon.current',        None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_kbyte, 'VM balloon size, current'        
  ],
-            [ 'domstats.balloon.maximum',        None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_kbyte, 'VM balloon size, maximum'        
  ],
+            [ 'domstats.balloon.current',        None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_kbyte, 'VM balloon, current size'        
  ],
+            [ 'domstats.balloon.maximum',        None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_kbyte, 'VM balloon, maximum size'        
  ],
+            [ 'domstats.balloon.swap_in',        None,                       
PM_TYPE_U64,    PM_SEM_COUNTER,  units_kbyte, 'VM balloon, swapped in total'    
  ],
+            [ 'domstats.balloon.swap_out',       None,                       
PM_TYPE_U64,    PM_SEM_COUNTER,  units_kbyte, 'VM balloon, swapped out total'   
  ],
+            [ 'domstats.balloon.major_fault',    None,                       
PM_TYPE_U64,    PM_SEM_COUNTER,  units_count, 'VM balloon, major faults'        
  ],
+            [ 'domstats.balloon.minor_fault',    None,                       
PM_TYPE_U64,    PM_SEM_COUNTER,  units_count, 'VM balloon, minor faults'        
  ],
+            [ 'domstats.balloon.unused',         None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_kbyte, 'VM balloon, unused'              
  ],
+            [ 'domstats.balloon.available',      None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_kbyte, 'VM balloon, available'           
  ],
+            [ 'domstats.balloon.rss',            None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_kbyte, 'VM balloon, proc RSS'            
  ],
+            [ 'domstats.balloon.usable',         None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_kbyte, 'VM balloon, usable w/o swap'     
  ],
+            [ 'domstats.balloon.last_update',    None,                       
PM_TYPE_U64,    PM_SEM_INSTANT,  units_secs,  'VM balloon, update timestamp'    
  ],
         ]
 
         self.vm_block_indom = self.indom(2)
@@ -743,6 +753,7 @@ class LibvirtPMDA(PMDA):
                 if cluster != self.vm_vcpustats_cluster and \
                    cluster != self.vm_blockstats_cluster and \
                    cluster != self.vm_netstats_cluster:
+                    if key == 'balloon.last_update': key = 
'balloon.last-update'
                     if key in res[pos][1]:
                         return [res[pos][1][key], 1]
                     else:

Thanks,

-- 
Marko Myllynen

<Prev in Thread] Current Thread [Next in Thread>
  • libvirt pmda: add new balloon statistics, Marko Myllynen <=