[libvirt] [PATCH 2/2] numa: Rewrite virNumaGetNodeCPUs() to query CPUs dynamically.

Andrea Bolognani abologna at redhat.com
Thu Apr 30 08:38:52 UTC 2015

On Wed, 2015-04-29 at 12:58 +0100, Daniel P. Berrange wrote:

> It seems to me that every application that uses libnuma is going to
> potentially suffer from the same problem. As such I don't think it
> is a good use of effort to workaround it in libvirt - it should be
> fixed in libnuma itself, so every applications benefits from the
> fix.

You're right, and in fact I had already filed a bug against numactl[1].

The reasoning behind removing numa_node_to_cpus() usage is as follows:

  1. we have no idea whether libnuma's upstream is going to agree that
     the caching behavior is problematic, or how long it's going to
     take for the change to be implemented; even when that does happen,
     it's not clear to me how we would deal with it - would that be a
     new API version? Would we have to deal with both API versions?
     Doing so would mean basically adding this code anyway, while not
     doing so would mean depending on a fairly new release of libnuma;

  2. detecting the host's topology should probably not be tied to the
     availability of libnuma, which is an optional feature that can be
     turned off at configure time, as all the information we need is
     exposed by the kernel already;

  3. most importantly, we're already parsing the information available
     in sysfs ourself, because libnuma doesn't offer an API to retrieve
     information about cores, threads etc. and as such is not enough to
     build the full host topology.

Of course my reasoning might be completely off, so feel free to point
out any issue with it :)


[1] https://bugzilla.redhat.com/show_bug.cgi?id=1213835
Andrea Bolognani <abologna at redhat.com>

More information about the libvir-list mailing list