On 03/12/2010 06:32 AM, Daniel Veillard wrote:
On Thu, Mar 11, 2010 at 06:00:56PM -0500, Chris Lalancette wrote:
> The nodeGetInfo code was always assuming that machine had a
> single NUMA node, which is not correct. The good news is that
> libnuma gives us this information pretty easily, so let's
> properly report it.
okay
> NOTE: With recent hardware starting to support CPU hot-add
> and hot-remove, both this code and the nodeCapsInitNUMA()
> code are quickly going to become obsolete. We'll have to
> think of a more dynamic solution for dealing with NUMA
> nodes and CPUs that can come and go at will.
well it makes little sense to refresh all the time,
I would expect some kind of signal we can hook on to detect
change in topology or capacities, though I don't see anything
on signal.h for this
Well, it's actually not horrible to refresh all of the time. The
way we get this information is all in memory (from /proc or /sys),
so it's a very fast operation. That being said, if we can get
a signal when things change, and just react to that, that's probably
the best way to go. This stuff is all very new, so things are
still being put into place; we'll just have to figure out how to
be more dynamic in the future.
> Signed-off-by: Chris Lalancette <clalance(a)redhat.com>
> ---
> src/nodeinfo.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/src/nodeinfo.c b/src/nodeinfo.c
> index 0748602..8d7e055 100644
> --- a/src/nodeinfo.c
> +++ b/src/nodeinfo.c
> @@ -159,7 +159,11 @@ int linuxNodeInfoCPUPopulate(virConnectPtr conn, FILE *cpuinfo,
>
> nodeinfo->cpus = 0;
> nodeinfo->mhz = 0;
> - nodeinfo->nodes = nodeinfo->cores = 1;
> + nodeinfo->cores = 1;
> + if (numa_available() < 0)
> + nodeinfo->nodes = 1;
> + else
> + nodeinfo->nodes = numa_max_node() + 1;
>
> /* NB: It is impossible to fill our nodes, since cpuinfo
> * has no knowledge of NUMA nodes */
ACK,
Thanks, I've pushed this now.
--
Chris Lalancette