[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] Problem of host CPU topology parsing



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.


[3] #define VIR_NODEINFO_MAXCPUS(nodeinfo) ((nodeinfo).nodes*(nodeinfo).sockets*(nodeinfo).cores*(nodeinfo).threads)

Rgeards,
Daniel


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]