[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Replace sysctl.physinfo.sockets_per_node with more directly useful
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |