# 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
|