numa affinity question

Stephen Finucane sfinucan at redhat.com
Wed Sep 25 09:08:58 UTC 2019


On Wed, 2019-09-25 at 07:49 +0000, Manuel Sopena Ballesteros wrote:
> Dear openstack user group,
>  
> I have a server with 2 numa nodes and I am trying to setup nova numa affinity.
>  
> [root at zeus-53 ~]# numactl -H
> available: 2 nodes (0-1)
> node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 28 29 30 31 32 33 34 35 36 37 38 39 40 41
> node 0 size: 262029 MB
> node 0 free: 2536 MB
> node 1 cpus: 14 15 16 17 18 19 20 21 22 23 24 25 26 27 42 43 44 45 46 47 48 49 50 51 52 53 54 55
> node 1 size: 262144 MB
> node 1 free: 250648 MB
> node distances:
> node   0   1
>   0:  10  21
>   1:  21  10
>  
> openstack flavor create --public xlarge.numa.perf --ram 250000 --disk 700 --vcpus 25 --property hw:cpu_policy=dedicated --property hw:emulator_threads_policy=isolate --property hw:numa_nodes='1' --property pci_passthrough:alias='nvme:4'
> openstack server create --network hpc --flavor xlarge.numa.perf --image centos7.6-kudu-image --availability-zone nova:zeus-53.localdomain --key-name mykey kudu-1
>  
> This is the xmldump for the created vm
>  
> But for some reason the second VM fails to create with the error
> <name>instance-00000108</name>
>   <uuid>5d278c90-27ab-4ee4-aeea-e1bf36ac246a</uuid>

[snip]

>   <vcpu placement='static'>25</vcpu>
>   <cputune>
>     <shares>25600</shares>
>     <vcpupin vcpu='0' cpuset='27'/>
>     <vcpupin vcpu='1' cpuset='55'/>
>     <vcpupin vcpu='2' cpuset='50'/>
>     <vcpupin vcpu='3' cpuset='22'/>
>     <vcpupin vcpu='4' cpuset='49'/>
>     <vcpupin vcpu='5' cpuset='21'/>
>     <vcpupin vcpu='6' cpuset='48'/>
>     <vcpupin vcpu='7' cpuset='20'/>
>     <vcpupin vcpu='8' cpuset='25'/>
>     <vcpupin vcpu='9' cpuset='53'/>
>     <vcpupin vcpu='10' cpuset='18'/>
>     <vcpupin vcpu='11' cpuset='46'/>
>     <vcpupin vcpu='12' cpuset='51'/>
>     <vcpupin vcpu='13' cpuset='23'/>
>     <vcpupin vcpu='14' cpuset='19'/>
>     <vcpupin vcpu='15' cpuset='47'/>
>     <vcpupin vcpu='16' cpuset='26'/>
>     <vcpupin vcpu='17' cpuset='54'/>
>     <vcpupin vcpu='18' cpuset='42'/>
>     <vcpupin vcpu='19' cpuset='14'/>
>     <vcpupin vcpu='20' cpuset='17'/>
>     <vcpupin vcpu='21' cpuset='45'/>
>     <vcpupin vcpu='22' cpuset='43'/>
>     <vcpupin vcpu='23' cpuset='15'/>
>     <vcpupin vcpu='24' cpuset='24'/>
>     <emulatorpin cpuset='14-15,17-27,42-43,45-51,53-55'/>
>   </cputune>

[snip]

This is what you want. See those 'cpuset' values? All of them are taken
from cores on host NUMA node #1, as you noted previously.

> node 1 cpus: 14 15 16 17 18 19 20 21 22 23 24 25 26 27 42 43 44 45 46 47 48 49 50 51 52 53 54 55

So to answer your questions:

> Are my vcpus in the same numa node?  if not why?

Yes.

> How can I tell from the xmldump that all vcpus are assigned to the same numa node?

For a single guest topology, look at the cpuset value and ensure they
all map to cores from a single host NUMA node.

Stephen




More information about the openstack-discuss mailing list