[libvirt] Problem of host CPU topology parsing

Daniel P. Berrange berrange at redhat.com
Fri May 11 08:48:06 UTC 2012


On Fri, May 11, 2012 at 04:40:08PM +0800, 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.

In the capabilities XML you post all the nodes have the same
number of sockets, so that workaround should not have been coming
into effect.

I think there's a flaw in the code that populates 'nodeinfo'
earlier than this.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list