[Kimchi-devel] [PATCH] Improve code to retrieve the number of host CPUs

Jose Ricardo Ziviani joserz at linux.vnet.ibm.com
Tue Apr 28 00:50:33 UTC 2015


 - Retrieving the number of cpus using psinfo is unstable, there
   are three (at least) different ways to do it that changes from
   version to version. This code improves the way such functions
   are called to avoid any surprise in future.

Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
---
 src/kimchi/model/host.py | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/kimchi/model/host.py b/src/kimchi/model/host.py
index 293c4ce..b2fa379 100644
--- a/src/kimchi/model/host.py
+++ b/src/kimchi/model/host.py
@@ -102,15 +102,20 @@ class HostModel(object):
         return res
 
     def lookup(self, *name):
-        cpus = 0
+        cpus = psutil.NUM_CPUS
 
-        # Only newer psutil versions have a portable method to get
-        # the number of cpus
-        try:
+        # psutil is unstable on how to get the number of
+        # cpus, different versions call it differently
+        if hasattr(psutil, 'cpu_count'):
             cpus = psutil.cpu_count()
 
-        except AttributeError:
-            cpus = psutil._psplatform.get_num_cpus()
+        elif hasattr(psutil, '_psplatform'):
+            for method_name in ['_get_num_cpus', 'get_num_cpus']:
+
+                method = getattr(psutil._psplatform, method_name, None)
+                if method is not None:
+                    cpus = method()
+                    break
 
         self.host_info['cpus'] = cpus
         self.host_info['memory'] = psutil.phymem_usage().total
-- 
1.9.1




More information about the Kimchi-devel mailing list