[PATCH] Old version of ppc64_cpu command doesn't support option --threads-per-core

From: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com> Old version of ppc64_cpu command doesn't support option --threads-per-core and raises a start message ValueError: invalid literal for int() with base 10: 'information)' Solution is to get info from lscpu which sounds accurate Remove dependency to qemu-kvm Signed-off-by: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com> modified: contrib/DEBIAN/control.in modified: src/kimchi/model/cpuinfo.py --- contrib/DEBIAN/control.in | 1 - src/kimchi/model/cpuinfo.py | 20 +++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/contrib/DEBIAN/control.in b/contrib/DEBIAN/control.in index 069e14b..776b033 100644 --- a/contrib/DEBIAN/control.in +++ b/contrib/DEBIAN/control.in @@ -14,7 +14,6 @@ Depends: python-cherrypy3 (>= 3.2.0), libvirt-bin, nfs-common, python-m2crypto, - qemu-kvm, python-pam, python-parted, python-psutil (>= 0.6.0), diff --git a/src/kimchi/model/cpuinfo.py b/src/kimchi/model/cpuinfo.py index 3411ef5..d43f21f 100644 --- a/src/kimchi/model/cpuinfo.py +++ b/src/kimchi/model/cpuinfo.py @@ -80,11 +80,21 @@ class CPUInfoModel(object): out, error, rc = run_command(['ppc64_cpu', '--cores-on']) if not rc: self.cores_available = int(out.split()[-1]) - out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) - if not rc: - self.threads_per_core = int(out.split()[-1]) - self.sockets = self.cores_present/self.threads_per_core - self.cores_per_socket = self.cores_present/self.sockets + try: + out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) + if not rc: + self.threads_per_core = int(out.split()[-1]) + self.sockets = self.cores_present/self.threads_per_core + self.cores_per_socket = self.cores_present/self.sockets + except: + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Thread(s) per core:"']) + if not rc: + self.cores_present = int(out.split()[-1]) + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Core(s) per socket:"']) + if not rc: + self.cores_available = int(out.split()[-1]) else: # Intel or AMD self.guest_threads_enabled = True -- 1.7.9.5

On 06/02/2015 09:50, thierry@linux.vnet.ibm.com wrote:
From: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com>
Old version of ppc64_cpu command doesn't support option --threads-per-core and raises a start message ValueError: invalid literal for int() with base 10: 'information)' Solution is to get info from lscpu which sounds accurate
Remove dependency to qemu-kvm
I don't think that is related to this patch. Please, send a separated patch to remove the dependency as well as explaining why it is needed. Also if it is really need, update the docs/README.md to reflect the change.
Signed-off-by: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com>
modified: contrib/DEBIAN/control.in modified: src/kimchi/model/cpuinfo.py --- contrib/DEBIAN/control.in | 1 - src/kimchi/model/cpuinfo.py | 20 +++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/contrib/DEBIAN/control.in b/contrib/DEBIAN/control.in index 069e14b..776b033 100644 --- a/contrib/DEBIAN/control.in +++ b/contrib/DEBIAN/control.in @@ -14,7 +14,6 @@ Depends: python-cherrypy3 (>= 3.2.0), libvirt-bin, nfs-common, python-m2crypto, - qemu-kvm, python-pam, python-parted, python-psutil (>= 0.6.0), diff --git a/src/kimchi/model/cpuinfo.py b/src/kimchi/model/cpuinfo.py index 3411ef5..d43f21f 100644 --- a/src/kimchi/model/cpuinfo.py +++ b/src/kimchi/model/cpuinfo.py @@ -80,11 +80,21 @@ class CPUInfoModel(object): out, error, rc = run_command(['ppc64_cpu', '--cores-on']) if not rc: self.cores_available = int(out.split()[-1]) - out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) - if not rc: - self.threads_per_core = int(out.split()[-1]) - self.sockets = self.cores_present/self.threads_per_core - self.cores_per_socket = self.cores_present/self.sockets
+ try: + out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) + if not rc: + self.threads_per_core = int(out.split()[-1]) + self.sockets = self.cores_present/self.threads_per_core + self.cores_per_socket = self.cores_present/self.sockets + except:
Explicit specify the exception expected here. Also, run_command() should handle the exception and return it as 'error' value. In which scenario the code will go to the 'except' block?
+ out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Thread(s) per core:"']) + if not rc: + self.cores_present = int(out.split()[-1]) + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Core(s) per socket:"']) + if not rc: + self.cores_available = int(out.split()[-1]) else: # Intel or AMD self.guest_threads_enabled = True

This isn't a good way to go. lscpu Threads/core is showing '1', b/c, on Power, SMT has to be off to use SMT for guests. # lscpu Architecture: ppc64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Big Endian CPU(s): 56 On-line CPU(s) list: 0,4,12,16,20,28,32,36,40,44,48,52,56,60 Off-line CPU(s) list: 1-3,5-7,13-15,17-19,21-23,29-31,33-35,37-39,41-43,45-47,49-51,53-55,57-59,61-63 Thread(s) per core: 1 Core(s) per socket: 7 Socket(s): 2 # ppc64_cpu --threads-per-core Threads per core: 4 On 02/06/2015 05:50 AM, thierry@linux.vnet.ibm.com wrote:
From: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com>
Old version of ppc64_cpu command doesn't support option --threads-per-core and raises a start message ValueError: invalid literal for int() with base 10: 'information)' Solution is to get info from lscpu which sounds accurate
Remove dependency to qemu-kvm
Signed-off-by: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com>
modified: contrib/DEBIAN/control.in modified: src/kimchi/model/cpuinfo.py --- contrib/DEBIAN/control.in | 1 - src/kimchi/model/cpuinfo.py | 20 +++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/contrib/DEBIAN/control.in b/contrib/DEBIAN/control.in index 069e14b..776b033 100644 --- a/contrib/DEBIAN/control.in +++ b/contrib/DEBIAN/control.in @@ -14,7 +14,6 @@ Depends: python-cherrypy3 (>= 3.2.0), libvirt-bin, nfs-common, python-m2crypto, - qemu-kvm, python-pam, python-parted, python-psutil (>= 0.6.0), diff --git a/src/kimchi/model/cpuinfo.py b/src/kimchi/model/cpuinfo.py index 3411ef5..d43f21f 100644 --- a/src/kimchi/model/cpuinfo.py +++ b/src/kimchi/model/cpuinfo.py @@ -80,11 +80,21 @@ class CPUInfoModel(object): out, error, rc = run_command(['ppc64_cpu', '--cores-on']) if not rc: self.cores_available = int(out.split()[-1]) - out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) - if not rc: - self.threads_per_core = int(out.split()[-1]) - self.sockets = self.cores_present/self.threads_per_core - self.cores_per_socket = self.cores_present/self.sockets + try: + out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) + if not rc: + self.threads_per_core = int(out.split()[-1]) + self.sockets = self.cores_present/self.threads_per_core + self.cores_per_socket = self.cores_present/self.sockets + except: + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Thread(s) per core:"']) + if not rc: + self.cores_present = int(out.split()[-1]) + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Core(s) per socket:"']) + if not rc: + self.cores_available = int(out.split()[-1]) else: # Intel or AMD self.guest_threads_enabled = True

Hi, 1) on ppc64le lscpu works properly: ubuntu@fauck3:~$ lscpu Architecture: ppc64le Byte Order: Little Endian CPU(s): 160 On-line CPU(s) list: 0-159 Thread(s) per core: 4 Core(s) per socket: 1 Socket(s): 40 NUMA node(s): 1 Model: IBM pSeries (emulated by qemu) L1d cache: 32K L1i cache: 32K NUMA node0 CPU(s): 0-159 ubuntu@fauck3:~$ ppc64_cpu --threads-per-core Threads per core: 4 ubuntu@fauck3:~$ dpkg-query -S /usr/sbin/ppc64_cpu powerpc-ibm-utils: /usr/sbin/ppc64_cpu ubuntu@fauck3:~$ ppc64_cpu --cores-present Number of cores present = 40 2) Do you agree that we need to handle this kind of error ? even though current proposed package is an updated package which works properly on ubuntu/trusty - so may be not necessary to go further. May be just handling a possible error and avoid a start fail. Thanks On 02/10/15 16:33, Christy Perez wrote:
This isn't a good way to go. lscpu Threads/core is showing '1', b/c, on Power, SMT has to be off to use SMT for guests.
# lscpu Architecture: ppc64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Big Endian CPU(s): 56 On-line CPU(s) list: 0,4,12,16,20,28,32,36,40,44,48,52,56,60 Off-line CPU(s) list: 1-3,5-7,13-15,17-19,21-23,29-31,33-35,37-39,41-43,45-47,49-51,53-55,57-59,61-63 Thread(s) per core: 1 Core(s) per socket: 7 Socket(s): 2
# ppc64_cpu --threads-per-core Threads per core: 4
On 02/06/2015 05:50 AM, thierry@linux.vnet.ibm.com wrote:
From: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com>
Old version of ppc64_cpu command doesn't support option --threads-per-core and raises a start message ValueError: invalid literal for int() with base 10: 'information)' Solution is to get info from lscpu which sounds accurate
Remove dependency to qemu-kvm
Signed-off-by: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com>
modified: contrib/DEBIAN/control.in modified: src/kimchi/model/cpuinfo.py --- contrib/DEBIAN/control.in | 1 - src/kimchi/model/cpuinfo.py | 20 +++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/contrib/DEBIAN/control.in b/contrib/DEBIAN/control.in index 069e14b..776b033 100644 --- a/contrib/DEBIAN/control.in +++ b/contrib/DEBIAN/control.in @@ -14,7 +14,6 @@ Depends: python-cherrypy3 (>= 3.2.0), libvirt-bin, nfs-common, python-m2crypto, - qemu-kvm, python-pam, python-parted, python-psutil (>= 0.6.0), diff --git a/src/kimchi/model/cpuinfo.py b/src/kimchi/model/cpuinfo.py index 3411ef5..d43f21f 100644 --- a/src/kimchi/model/cpuinfo.py +++ b/src/kimchi/model/cpuinfo.py @@ -80,11 +80,21 @@ class CPUInfoModel(object): out, error, rc = run_command(['ppc64_cpu', '--cores-on']) if not rc: self.cores_available = int(out.split()[-1]) - out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) - if not rc: - self.threads_per_core = int(out.split()[-1]) - self.sockets = self.cores_present/self.threads_per_core - self.cores_per_socket = self.cores_present/self.sockets + try: + out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) + if not rc: + self.threads_per_core = int(out.split()[-1]) + self.sockets = self.cores_present/self.threads_per_core + self.cores_per_socket = self.cores_present/self.sockets + except: + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Thread(s) per core:"']) + if not rc: + self.cores_present = int(out.split()[-1]) + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Core(s) per socket:"']) + if not rc: + self.cores_available = int(out.split()[-1]) else: # Intel or AMD self.guest_threads_enabled = True
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
-- Thierry Fauck (thierry@linux.vnet.ibm.com)

On 02/10/2015 01:26 PM, Thierry Fauck ( thierry @ linux.vnet.ibm.com ) wrote:
Hi,
1) on ppc64le lscpu works properly: ubuntu@fauck3:~$ lscpu Architecture: ppc64le Byte Order: Little Endian CPU(s): 160 On-line CPU(s) list: 0-159 Thread(s) per core: 4 Core(s) per socket: 1 Socket(s): 40 NUMA node(s): 1 Model: IBM pSeries (emulated by qemu) L1d cache: 32K L1i cache: 32K NUMA node0 CPU(s): 0-159 ubuntu@fauck3:~$ ppc64_cpu --threads-per-core Threads per core: 4 ubuntu@fauck3:~$ dpkg-query -S /usr/sbin/ppc64_cpu powerpc-ibm-utils: /usr/sbin/ppc64_cpu ubuntu@fauck3:~$ ppc64_cpu --cores-present Number of cores present = 40
2) Do you agree that we need to handle this kind of error ? even though current proposed package is an updated package which works properly on ubuntu/trusty - so may be not necessary to go further. May be just handling a possible error and avoid a start fail.
If the older version of ppc64_cpu without the --threads-per-core argument is all that's available in any supported distros, we should fix it. If not, we could add some safe-guarding and also set all the values back to the defaults (e.g. False and all 0's, as at the beginning of the function). ... And, just a suggestion: If you put *.py diff=python into the .git/info/attributes for your kimchi project, it will create better diffs. The main thing I like about it is that instead of the class name, it lists the function the change is to as well.
Thanks
On 02/10/15 16:33, Christy Perez wrote:
This isn't a good way to go. lscpu Threads/core is showing '1', b/c, on Power, SMT has to be off to use SMT for guests.
# lscpu Architecture: ppc64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Big Endian CPU(s): 56 On-line CPU(s) list: 0,4,12,16,20,28,32,36,40,44,48,52,56,60 Off-line CPU(s) list: 1-3,5-7,13-15,17-19,21-23,29-31,33-35,37-39,41-43,45-47,49-51,53-55,57-59,61-63 Thread(s) per core: 1 Core(s) per socket: 7 Socket(s): 2
# ppc64_cpu --threads-per-core Threads per core: 4
On 02/06/2015 05:50 AM, thierry@linux.vnet.ibm.com wrote:
From: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com>
Old version of ppc64_cpu command doesn't support option --threads-per-core and raises a start message ValueError: invalid literal for int() with base 10: 'information)' Solution is to get info from lscpu which sounds accurate
Remove dependency to qemu-kvm
Signed-off-by: Thierry FAUCK - IBM LTC <thierry@linux.vnet.ibm.com>
modified: contrib/DEBIAN/control.in modified: src/kimchi/model/cpuinfo.py --- contrib/DEBIAN/control.in | 1 - src/kimchi/model/cpuinfo.py | 20 +++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/contrib/DEBIAN/control.in b/contrib/DEBIAN/control.in index 069e14b..776b033 100644 --- a/contrib/DEBIAN/control.in +++ b/contrib/DEBIAN/control.in @@ -14,7 +14,6 @@ Depends: python-cherrypy3 (>= 3.2.0), libvirt-bin, nfs-common, python-m2crypto, - qemu-kvm, python-pam, python-parted, python-psutil (>= 0.6.0), diff --git a/src/kimchi/model/cpuinfo.py b/src/kimchi/model/cpuinfo.py index 3411ef5..d43f21f 100644 --- a/src/kimchi/model/cpuinfo.py +++ b/src/kimchi/model/cpuinfo.py @@ -80,11 +80,21 @@ class CPUInfoModel(object): out, error, rc = run_command(['ppc64_cpu', '--cores-on']) if not rc: self.cores_available = int(out.split()[-1]) - out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) - if not rc: - self.threads_per_core = int(out.split()[-1]) - self.sockets = self.cores_present/self.threads_per_core - self.cores_per_socket = self.cores_present/self.sockets + try: + out, error, rc = run_command(['ppc64_cpu', '--threads-per-core']) + if not rc: + self.threads_per_core = int(out.split()[-1]) + self.sockets = self.cores_present/self.threads_per_core + self.cores_per_socket = self.cores_present/self.sockets + except: + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Thread(s) per core:"']) + if not rc: + self.cores_present = int(out.split()[-1]) + out, error, rc = run_command(['sh', '-c', 'lscpu | + grep "Core(s) per socket:"']) + if not rc: + self.cores_available = int(out.split()[-1]) else: # Intel or AMD self.guest_threads_enabled = True
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
participants (4)
-
Aline Manera
-
Christy Perez
-
Thierry Fauck ( thierry @ linux.vnet.ibm.com )
-
thierry@linux.vnet.ibm.com