On Wed, Jan 11, 2017 at 06:52:45AM +0000, Qiao, Liyong wrote:
Hi,
I observe that virsh capabilities give wrong cpu topology on a multiple sockets host
taget@jfz1r04h13:~/libvirt$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 72
On-line CPU(s) list: 0-71
Thread(s) per core: 2
Core(s) per socket: 18
Socket(s): 2 <------------------------
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
Stepping: 2
CPU MHz: 1201.660
CPU max MHz: 3600.0000
CPU min MHz: 1200.0000
BogoMIPS: 4590.78
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 46080K
NUMA node0 CPU(s): 0-17,36-53
NUMA node1 CPU(s): 18-35,54-71
But output of virsh capabilities only gives.
<topology sockets='1' cores='18' threads='2'/>
The 'sockets' value is basically "sockets-per-NUMA-node".
BOth the <topology> summary and nodeinfo data is really a broken
design as it can't cope with asymetric topologies. We recommend
apps to completely ignore this data, and instead look at the fine
grained topology info in the capabilities:
<topology>
<cells num='2'>
<cell id='0'>
...
<cpus num='6'>
<cpu id='0' socket_id='0' core_id='0'
siblings='0'/>
<cpu id='1' socket_id='0' core_id='2'
siblings='1'/>
<cpu id='2' socket_id='0' core_id='4'
siblings='2'/>
<cpu id='6' socket_id='0' core_id='1'
siblings='6'/>
<cpu id='7' socket_id='0' core_id='3'
siblings='7'/>
<cpu id='8' socket_id='0' core_id='5'
siblings='8'/>
</cpus>
</cell>
...
</cells>
</topology>
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://entangle-photo.org -o-
http://search.cpan.org/~danberr/ :|