[libvirt-users] numa topology within domain XML

Geert Geurts geert.geurts at hrz.tu-darmstadt.de
Thu Nov 1 14:19:05 UTC 2012


Hello all,

I'm trying to setup a NUMA topology identical as the machine which hosts 
the qemu-kvm VirtualMachine.
numactl -H on the host:
available: 8 nodes (0-7)
node 0 cpus: 0 1 2 3 4 5
node 0 size: 8189 MB
node 0 free: 7581 MB
node 1 cpus: 6 7 8 9 10 11
node 1 size: 8192 MB
node 1 free: 7061 MB
node 2 cpus: 12 13 14 15 16 17
node 2 size: 8192 MB
node 2 free: 6644 MB
node 3 cpus: 18 19 20 21 22 23
node 3 size: 8192 MB
node 3 free: 7747 MB
node 4 cpus: 24 25 26 27 28 29
node 4 size: 8192 MB
node 4 free: 7388 MB
node 5 cpus: 30 31 32 33 34 35
node 5 size: 8192 MB
node 5 free: 7593 MB
node 6 cpus: 36 37 38 39 40 41
node 6 size: 8192 MB
node 6 free: 3848 MB
node 7 cpus: 42 43 44 45 46 47
node 7 size: 8192 MB
node 7 free: 7502 MB
node distances:
node   0   1   2   3   4   5   6   7
   0:  10  16  16  22  16  22  16  22
   1:  16  10  22  16  22  16  22  16
   2:  16  22  10  16  16  22  16  22
   3:  22  16  16  10  22  16  22  16
   4:  16  22  16  22  10  16  16  22
   5:  22  16  22  16  16  10  22  16
   6:  16  22  16  22  16  22  10  16
   7:  22  16  22  16  22  16  16  10

I would like to use 2 numanodes for one VM but somehow the virsh edit 
DOMAIN command doesn't apply the changes I make...
I tried specifying the numa topology within the <topology> sub-section 
of the <cpu> section as in:
<cpu mode='custom' match='exact'>
     <model fallback='allow'>Opteron_G4</model>
     <vendor>AMD</vendor>
     <topology sockets='1' cores='6' threads='2'>
       <cells num='2'>
         <cell id='0'>
           <cpus num='6'>
             <cpu id='0'/>
             <cpu id='1'/>
             <cpu id='2'/>
             <cpu id='3'/>
             <cpu id='4'/>
             <cpu id='5'/>
           </cpus>
         </cell>
         <cell id='1'>
           <cpus num='6'>
             <cpu id='6'/>
             <cpu id='7'/>
             <cpu id='8'/>
             <cpu id='9'/>
             <cpu id='10'/>
             <cpu id='11'/>
           </cpus>
         </cell>
       </cells>
   </topology>
     <feature policy='require' name='nodeid_msr'/>
     <feature policy='require' name='wdt'/>
     <feature policy='require' name='skinit'/>
     <feature policy='require' name='ibs'/>
     <feature policy='require' name='osvw'/>
     <feature policy='require' name='cr8legacy'/>
     <feature policy='require' name='extapic'/>
     <feature policy='require' name='cmp_legacy'/>
     <feature policy='require' name='fxsr_opt'/>
     <feature policy='require' name='mmxext'/>
     <feature policy='require' name='osxsave'/>
     <feature policy='require' name='monitor'/>
     <feature policy='require' name='ht'/>
     <feature policy='require' name='vme'/>
   </cpu>

I tried specifying each numa cell using a <numa></numa> section as in:
<numa>
     <cell cpus='0-5' memory='7596032'/>
     <cell cpus='6-11' memory='7596032'/>
</numa>

In both situation virsh says it successfully applied the edit, but when 
I edit it again right after that the changes have been removed and the 
numa topology in the VM is one node with all cores.

Could someone please tell me what I'm doing wrong here?

Oooh, by the way, I'm using libvirt 0.10.2-0rc2 and 
qemu-kvm-0.12.1.2-2.295.el6_3.2 on a Scientific linux 6.2 machine.


Thanks!

Best regards,
Geert Geurts




More information about the libvirt-users mailing list