WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Replace sysctl.physinfo.sockets_per_node

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Replace sysctl.physinfo.sockets_per_node with more directly useful
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 20 Oct 2007 05:50:24 -0700
Delivery-date: Sat, 20 Oct 2007 05:52:54 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1192813210 -3600
# Node ID 6df47366830c577c7dccefc20b68d7df157f454d
# Parent  975811798ffef918968d8594ac6d0017c7cc5ab1
Replace sysctl.physinfo.sockets_per_node with more directly useful
sysctl.physinfo.nr_cpus. This also avoids miscalculation of
sockets_per_node by Xen where the number of CPUs in the system is
clipped.
From: Elizabeth Kon <eak@xxxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 docs/man/xm.pod.1                          |    1 -
 tools/python/xen/lowlevel/xc/xc.c          |    2 +-
 tools/python/xen/xend/XendNode.py          |   11 +----------
 tools/python/xen/xm/main.py                |    3 +--
 tools/xenmon/xenbaked.c                    |    5 +----
 tools/xenstat/libxenstat/src/xenstat.c     |    4 +---
 tools/xentrace/xentrace.c                  |    5 +----
 tools/xm-test/lib/XmTestLib/Xm.py          |    8 +++-----
 tools/xm-test/lib/XmTestReport/OSReport.py |    1 -
 xen/arch/ia64/xen/dom0_ops.c               |   14 ++------------
 xen/arch/powerpc/sysctl.c                  |    4 +---
 xen/arch/x86/sysctl.c                      |    4 +---
 xen/include/public/sysctl.h                |    4 ++--
 13 files changed, 15 insertions(+), 51 deletions(-)

diff -r 975811798ffe -r 6df47366830c docs/man/xm.pod.1
--- a/docs/man/xm.pod.1 Fri Oct 19 17:47:12 2007 +0100
+++ b/docs/man/xm.pod.1 Fri Oct 19 18:00:10 2007 +0100
@@ -446,7 +446,6 @@ page more readable):
  machine                : i686
  nr_cpus                : 2
  nr_nodes               : 1
- sockets_per_node       : 2
  cores_per_socket       : 1
  threads_per_core       : 1
  cpu_mhz                : 696
diff -r 975811798ffe -r 6df47366830c tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Fri Oct 19 17:47:12 2007 +0100
+++ b/tools/python/xen/lowlevel/xc/xc.c Fri Oct 19 18:00:10 2007 +0100
@@ -801,7 +801,7 @@ static PyObject *pyxc_physinfo(XcObject 
                             "max_cpu_id",       info.max_cpu_id,
                             "threads_per_core", info.threads_per_core,
                             "cores_per_socket", info.cores_per_socket,
-                            "sockets_per_node", info.sockets_per_node,
+                            "nr_cpus",          info.nr_cpus, 
                             "total_memory",     pages_to_kib(info.total_pages),
                             "free_memory",      pages_to_kib(info.free_pages),
                             "scrub_memory",     pages_to_kib(info.scrub_pages),
diff -r 975811798ffe -r 6df47366830c tools/python/xen/xend/XendNode.py
--- a/tools/python/xen/xend/XendNode.py Fri Oct 19 17:47:12 2007 +0100
+++ b/tools/python/xen/xend/XendNode.py Fri Oct 19 18:00:10 2007 +0100
@@ -475,7 +475,7 @@ class XendNode:
 
         cpu_info = {
             "nr_nodes":         phys_info["nr_nodes"],
-            "sockets_per_node": phys_info["sockets_per_node"],
+            "nr_cpus":          phys_info["nr_cpus"],
             "cores_per_socket": phys_info["cores_per_socket"],
             "threads_per_core": phys_info["threads_per_core"]
             }
@@ -580,17 +580,9 @@ 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'] = self.count_cpus(info)
         info['cpu_mhz'] = info['cpu_khz'] / 1000
         
         # physinfo is in KiB, need it in MiB
@@ -600,7 +592,6 @@ class XendNode:
 
         ITEM_ORDER = ['nr_cpus',
                       'nr_nodes',
-                      'sockets_per_node',
                       'cores_per_socket',
                       'threads_per_core',
                       'cpu_mhz',
diff -r 975811798ffe -r 6df47366830c tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Fri Oct 19 17:47:12 2007 +0100
+++ b/tools/python/xen/xm/main.py       Fri Oct 19 18:00:10 2007 +0100
@@ -1667,9 +1667,8 @@ def xm_info(args):
             "release":           getVal(["software_version", "release"]),
             "version":           getVal(["software_version", "version"]),
             "machine":           getVal(["software_version", "machine"]),
-            "nr_cpus":           len(getVal(["host_CPUs"], [])),
+            "nr_cpus":           getVal(["cpu_configuration", "nr_cpus"]),
             "nr_nodes":          getVal(["cpu_configuration", "nr_nodes"]),
-            "sockets_per_node":  getVal(["cpu_configuration", 
"sockets_per_node"]),
             "cores_per_socket":  getVal(["cpu_configuration", 
"cores_per_socket"]),
             "threads_per_core":  getVal(["cpu_configuration", 
"threads_per_core"]),
             "cpu_mhz":           getCpuMhz(),
diff -r 975811798ffe -r 6df47366830c tools/xenmon/xenbaked.c
--- a/tools/xenmon/xenbaked.c   Fri Oct 19 17:47:12 2007 +0100
+++ b/tools/xenmon/xenbaked.c   Fri Oct 19 18:00:10 2007 +0100
@@ -460,10 +460,7 @@ unsigned int get_num_cpus(void)
     xc_interface_close(xc_handle);
     opts.cpu_freq = (double)physinfo.cpu_khz/1000.0;
 
-    return (physinfo.threads_per_core *
-            physinfo.cores_per_socket *
-            physinfo.sockets_per_node *
-            physinfo.nr_nodes);
+    return physinfo.nr_cpus;
 }
 
 
diff -r 975811798ffe -r 6df47366830c tools/xenstat/libxenstat/src/xenstat.c
--- a/tools/xenstat/libxenstat/src/xenstat.c    Fri Oct 19 17:47:12 2007 +0100
+++ b/tools/xenstat/libxenstat/src/xenstat.c    Fri Oct 19 18:00:10 2007 +0100
@@ -155,9 +155,7 @@ xenstat_node *xenstat_get_node(xenstat_h
        }
 
        node->cpu_hz = ((unsigned long long)physinfo.cpu_khz) * 1000ULL;
-       node->num_cpus =
-           (physinfo.threads_per_core * physinfo.cores_per_socket *
-            physinfo.sockets_per_node * physinfo.nr_nodes);
+        node->num_cpus = physinfo.nr_cpus;
        node->tot_mem = ((unsigned long long)physinfo.total_pages)
            * handle->page_size;
        node->free_mem = ((unsigned long long)physinfo.free_pages)
diff -r 975811798ffe -r 6df47366830c tools/xentrace/xentrace.c
--- a/tools/xentrace/xentrace.c Fri Oct 19 17:47:12 2007 +0100
+++ b/tools/xentrace/xentrace.c Fri Oct 19 18:00:10 2007 +0100
@@ -309,10 +309,7 @@ unsigned int get_num_cpus(void)
 
     xc_interface_close(xc_handle);
 
-    return (physinfo.threads_per_core *
-            physinfo.cores_per_socket *
-            physinfo.sockets_per_node *
-            physinfo.nr_nodes);
+    return physinfo.nr_cpus;
 }
 
 
diff -r 975811798ffe -r 6df47366830c tools/xm-test/lib/XmTestLib/Xm.py
--- a/tools/xm-test/lib/XmTestLib/Xm.py Fri Oct 19 17:47:12 2007 +0100
+++ b/tools/xm-test/lib/XmTestLib/Xm.py Fri Oct 19 18:00:10 2007 +0100
@@ -218,11 +218,9 @@ def restartXend():
         return status
 
 def smpConcurrencyLevel():
-    cores = int(getInfo("cores_per_socket"))
-    threads = int(getInfo("threads_per_core"))
-    sockets = int(getInfo("sockets_per_node"))
-
-    return cores * sockets * threads
+    nr_cpus = int(getInfo("nr_cpus"))
+
+    return nr_cpus
 
 if __name__ == "__main__":
     if isDomainRunning("0"):
diff -r 975811798ffe -r 6df47366830c tools/xm-test/lib/XmTestReport/OSReport.py
--- a/tools/xm-test/lib/XmTestReport/OSReport.py        Fri Oct 19 17:47:12 
2007 +0100
+++ b/tools/xm-test/lib/XmTestReport/OSReport.py        Fri Oct 19 18:00:10 
2007 +0100
@@ -92,7 +92,6 @@ class Machine:
 
         xenValues = {"nr_cpus"          : "Unknown",
                      "nr_nodes"         : "Unknown",
-                     "sockets_per_node" : "Unknown",
                      "cores_per_socket" : "Unknown",
                      "threads_per_core" : "Unknown",
                      "cpu_mhz"          : "Unknown",
diff -r 975811798ffe -r 6df47366830c xen/arch/ia64/xen/dom0_ops.c
--- a/xen/arch/ia64/xen/dom0_ops.c      Fri Oct 19 17:47:12 2007 +0100
+++ b/xen/arch/ia64/xen/dom0_ops.c      Fri Oct 19 18:00:10 2007 +0100
@@ -251,7 +251,7 @@ long arch_do_sysctl(xen_sysctl_t *op, XE
     {
     case XEN_SYSCTL_physinfo:
     {
-        int i, node_cpus = 0;
+        int i;
         uint32_t max_array_ent;
 
         xen_sysctl_physinfo_t *pi = &op->u.physinfo;
@@ -259,18 +259,8 @@ long arch_do_sysctl(xen_sysctl_t *op, XE
         pi->threads_per_core = cpus_weight(cpu_sibling_map[0]);
         pi->cores_per_socket =
             cpus_weight(cpu_core_map[0]) / pi->threads_per_core;
+        pi->nr_cpus          = (u32)num_online_cpus();
         pi->nr_nodes         = num_online_nodes();
-
-        /*
-         * Guess at a sockets_per_node value.  Use the maximum number of
-         * CPUs per node to avoid deconfigured CPUs breaking the average.
-         */
-        for_each_online_node(i)
-            node_cpus = max(node_cpus, cpus_weight(node_to_cpumask(i)));
-
-        pi->sockets_per_node = node_cpus / 
-            (pi->cores_per_socket * pi->threads_per_core);
-
         pi->total_pages      = total_pages; 
         pi->free_pages       = avail_domheap_pages();
         pi->scrub_pages      = avail_scrub_pages();
diff -r 975811798ffe -r 6df47366830c xen/arch/powerpc/sysctl.c
--- a/xen/arch/powerpc/sysctl.c Fri Oct 19 17:47:12 2007 +0100
+++ b/xen/arch/powerpc/sysctl.c Fri Oct 19 18:00:10 2007 +0100
@@ -45,9 +45,7 @@ long arch_do_sysctl(struct xen_sysctl *s
             cpus_weight(cpu_sibling_map[0]);
         pi->cores_per_socket =
             cpus_weight(cpu_core_map[0]) / pi->threads_per_core;
-        pi->sockets_per_node = num_online_cpus() / 
-            (num_online_nodes() * pi->cores_per_socket * pi->threads_per_core);
-
+        pi->nr_cpus          = (u32)num_online_cpus();
         pi->nr_nodes         = num_online_nodes();
         pi->total_pages      = total_pages;
         pi->free_pages       = avail_domheap_pages();
diff -r 975811798ffe -r 6df47366830c xen/arch/x86/sysctl.c
--- a/xen/arch/x86/sysctl.c     Fri Oct 19 17:47:12 2007 +0100
+++ b/xen/arch/x86/sysctl.c     Fri Oct 19 18:00:10 2007 +0100
@@ -51,10 +51,8 @@ long arch_do_sysctl(
             cpus_weight(cpu_sibling_map[0]);
         pi->cores_per_socket =
             cpus_weight(cpu_core_map[0]) / pi->threads_per_core;
+        pi->nr_cpus = (u32)num_online_cpus();
         pi->nr_nodes = num_online_nodes();
-        pi->sockets_per_node = num_online_cpus() / 
-            (pi->nr_nodes * pi->cores_per_socket * pi->threads_per_core);
-
         pi->total_pages      = total_pages;
         pi->free_pages       = avail_domheap_pages();
         pi->scrub_pages      = avail_scrub_pages();
diff -r 975811798ffe -r 6df47366830c xen/include/public/sysctl.h
--- a/xen/include/public/sysctl.h       Fri Oct 19 17:47:12 2007 +0100
+++ b/xen/include/public/sysctl.h       Fri Oct 19 18:00:10 2007 +0100
@@ -34,7 +34,7 @@
 #include "xen.h"
 #include "domctl.h"
 
-#define XEN_SYSCTL_INTERFACE_VERSION 0x00000004
+#define XEN_SYSCTL_INTERFACE_VERSION 0x00000005
 
 /*
  * Read console content from Xen buffer ring.
@@ -79,7 +79,7 @@ struct xen_sysctl_physinfo {
     /* IN variables. */
     uint32_t threads_per_core;
     uint32_t cores_per_socket;
-    uint32_t sockets_per_node;
+    uint32_t nr_cpus;
     uint32_t nr_nodes;
     uint32_t cpu_khz;
     uint64_aligned_t total_pages;

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Replace sysctl.physinfo.sockets_per_node with more directly useful, Xen patchbot-unstable <=