
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