
On 02/05/2013 04:34 AM, Peter Krempa wrote:
The data in the "nodeinfo" structure (retrirevable by "virsh nodeinfo") have to add up to the total number of processors in the host if you multiply all the fields. This is due to historic reasons.
Hmm - we document under virNodeInfo the cases where the return value will not be ideal, as well as how to detect that issue: struct _virNodeInfo { char model[32]; /* string indicating the CPU model */ unsigned long memory; /* memory size in kilobytes */ unsigned int cpus; /* the number of active CPUs */ unsigned int mhz; /* expected CPU frequency */ unsigned int nodes; /* the number of NUMA cell, 1 for unusual NUMA topologies or uniform memory access; check capabilities XML for the actual NUMA topology */ unsigned int sockets; /* number of CPU sockets per node if nodes > 1, 1 in case of unusual NUMA topology */ unsigned int cores; /* number of cores per socket, total number of processors in case of unusual NUMA topology*/ unsigned int threads; /* number of threads per core, 1 in case of unusual numa topology */ }; but the documentation for virNodeGetInfo could probably use a reminder sentence (so that the problem is obvious just from the function documentation, without having to chase through links to the struct documentation).
Anyone else thoughts? Would this be acceptable? Right now the output is broken and if you put any NUMA values into the XML or use numad the domain will not start and will give a cryptic error message. Which is a lot worst than reporting 4 sockets, 8 cores, 1 thread or 8 sockets, 8 cores and 1 thread IMHO.
To get correct data, you have to use libvirt-1.0.2 with this script:
https://bugzilla.redhat.com/attachment.cgi?id=690965&action=edit
We should probably ship this script in the examples directory of libvirt.git, and reference it more prominently from the documentation. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org