[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] Re: [Xen-staging] [xen-unstable] Extended the physinfo sysctl to export NUMA cpu_to_node topology info.



On Fri, 2007-07-06 at 16:14 +0100, Xen staging patchbot-unstable wrote:
> # HG changeset patch
> # User kfraser@xxxxxxxxxxxxxxxxxxxxx
> # Date 1183734727 -3600
> # Node ID 89d2192942befb0daf56e730be61d3a3c06926dd
> # Parent  538c3d8aa4b14833174423ec506284279d5a33ab
> Extended the physinfo sysctl to export NUMA cpu_to_node topology info.
> Print this in 'xm info'.
...
> diff -r 538c3d8aa4b1 -r 89d2192942be tools/python/xen/xend/XendNode.py
> --- a/tools/python/xen/xend/XendNode.py       Fri Jul 06 15:01:20 2007 +0100
> +++ b/tools/python/xen/xend/XendNode.py       Fri Jul 06 16:12:07 2007 +0100
...
> +    def format_pairs(self,pairs):
> +            if not pairs:
> +                return "no cpus"

  We add support here for nodes w/o cpus, but the existing code blindly
assumes all nodes have cpus later on:

        info['nr_cpus'] = (info['nr_nodes'] *
                           info['sockets_per_node'] *
                           info['cores_per_socket'] *
                           info['threads_per_core'])

How about we count the cpus in the node_to_cpu list to avoid mistakes?
Here's the output on a system where this gave strange results before:

nr_cpus                : 8
nr_nodes               : 3
sockets_per_node       : 4
cores_per_socket       : 1
threads_per_core       : 1
...
node_to_cpu            : node0:0-3
                         node1:4-7
                         node2:no cpus

BTW, I don't know a case where it fails, but assuming sockets_per_node
is a constant for the system seems risky.  Thanks,

        Alex


Count CPUs rather than relying on a static nodes/sockets/cores/threads
relationship.

Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---

diff -r ef0a5778e3ac tools/python/xen/xend/XendNode.py
--- a/tools/python/xen/xend/XendNode.py Mon Jul 09 10:59:56 2007 -0600
+++ b/tools/python/xen/xend/XendNode.py Mon Jul 09 23:12:33 2007 -0600
@@ -580,14 +580,17 @@ class XendNode:
             str='none\n'
         return str[:-1];
 
+    def count_cpus(self, pinfo):
+        count=0
+        node_to_cpu=pinfo['node_to_cpu']
+        for i in range(0, pinfo['nr_nodes']):
+            count+=len(node_to_cpu[i])
+        return count;
 
     def physinfo(self):
         info = self.xc.physinfo()
 
-        info['nr_cpus'] = (info['nr_nodes'] *
-                           info['sockets_per_node'] *
-                           info['cores_per_socket'] *
-                           info['threads_per_core'])
+        info['nr_cpus'] = self.count_cpus(info)
         info['cpu_mhz'] = info['cpu_khz'] / 1000
         
         # physinfo is in KiB, need it in MiB



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.