[libvirt] CPU topology 'sockets' handling guest vs host
Jiri Denemark
jdenemar at redhat.com
Mon Mar 26 15:08:05 UTC 2012
On Mon, Mar 26, 2012 at 15:42:58 +0100, Daniel P. Berrange wrote:
> On my x86_64 host I have a pair of Quad core CPUs, each in a separate
> NUMA node. The virsh capabilities
> topology data reports this:
>
> # virsh capabilities | xmllint --xpath /capabilities/host/cpu -
> <cpu>
> <arch>x86_64</arch>
> <model>Opteron_G3</model>
> <vendor>AMD</vendor>
> <topology sockets="1" cores="4" threads="1"/>
> <feature name="osvw"/>
> <feature name="3dnowprefetch"/>
> <feature name="cr8legacy"/>
> <feature name="extapic"/>
> <feature name="cmp_legacy"/>
> <feature name="3dnow"/>
> <feature name="3dnowext"/>
> <feature name="pdpe1gb"/>
> <feature name="fxsr_opt"/>
> <feature name="mmxext"/>
> <feature name="ht"/>
> <feature name="vme"/>
> </cpu>
> # virsh capabilities | xmllint --xpath /capabilities/host/topology -
> <topology>
> <cells num="2">
> <cell id="0">
> <cpus num="4">
> <cpu id="0"/>
> <cpu id="1"/>
> <cpu id="2"/>
> <cpu id="3"/>
> </cpus>
> </cell>
> <cell id="1">
> <cpus num="4">
> <cpu id="4"/>
> <cpu id="5"/>
> <cpu id="6"/>
> <cpu id="7"/>
> </cpus>
> </cell>
> </cells>
> </topology>
>
> Note, it is reporting sockets=1, because sockets is the number of sockets
> *per* NUMA node.
>
>
> Now I try to figure the guest to match the host using:
>
> <cpu>
> <topology sockets='1' cores='4' threads='1'/>
> <numa>
> <cell cpus='0-3' memory='512000'/>
> <cell cpus='4-7' memory='512000'/>
> </numa>
> </cpu>
>
> And I get:
>
> error: Maximum CPUs greater than topology limit
>
> So, the XML checker is mistaking 'sockets' as the total number of sockets,
> rather than the per-node socket count. We need to fix this bogus check
I guess what we actually want to do is to report total number of sockets in
host cpu xml. Sockets per NUMA node has been proven to be a bad decision and
we should not let it infect other areas.
Jirka
More information about the libvir-list
mailing list