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 :)
Cheers.
[1]
https://bugzilla.redhat.com/show_bug.cgi?id=1213835
--
Andrea Bolognani <abologna(a)redhat.com>