[libvirt] Problem of host CPU topology parsing
Michal Privoznik
mprivozn at redhat.com
Fri May 11 08:47:06 UTC 2012
On 11.05.2012 10:40, Osier Yang wrote:
> On 2012年05月11日 16:35, Daniel P. Berrange wrote:
>> On Fri, May 11, 2012 at 04:21:48PM +0800, Osier Yang wrote:
>>> Hi,
>>>
>>> We have problem of host CPU topology parsing on special
>>> platforms (general platforms are fine). E.g.
>>>
>>> On a AMD machine with 48 CPUs [1] (4 sockets, 6 cores indeed
>>> [2]), VIR_NODEINFO_MAXCPUS [3] will always return 24 as the
>>> total CPU number.
>>
>> If it is returning 24, then surely we have the 'nodes' value
>> wrong in the virNodeInfo ? It sounds like it should have been
>> set to 2 (4 * 6 * 2 => 48)
>
> /* nodeinfo->sockets is supposed to be a number of sockets per NUMA
> node,
> * however if NUMA nodes are not composed of whole sockets, we just lie
> * about the number of NUMA nodes and force apps to check
> capabilities XML
> * for the actual NUMA topology.
> */
> if (nodeinfo->sockets % nodeinfo->nodes == 0)
> nodeinfo->sockets /= nodeinfo->nodes;
> else
> nodeinfo->nodes = 1;
>
> Jirka said this was for a fix, but I don't quite understand it,
> what does the "nodeinfo.nodes" mean actually? Shouldn't it
> be 8 (for the 48 CPUs machine) instead? But then we will be
> wrong again with using VIR_NODEINFO_MAXCPUS.
Why do you think it will be wrong? My understanding is that
VIR_NODEINFO_MAXCPUS just tell the max number of possible cpus not the
actual. So if it's over 48 we are safe. Btw: the code above seems like a
hack to me.
Michal
More information about the libvir-list
mailing list