[libvirt] Errors related to Per-node memory binding and huge pages per NUMA node.

Vinod Chegu vinodchegu at gmail.com
Thu Apr 27 01:56:59 UTC 2017


Hi Daniel et.al,

Running into the following errors when attempting to start up a multi-vNUMA
node VM backed by 1G huge page per physical NUMA node. (details below)

error: unsupported configuration: Per-node memory binding is not supported
with this QEMU

(or in another case)

error: unsupported configuration: huge pages per NUMA node are not
supported with this QEMU


What am I missing ?

Thanks!

Vinod





System : (CentOS 7.3)

---------



# numactl -H

available: 2 nodes (0-1)

node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23

node 0 size: 65320 MB

node 0 free: 62672 MB

node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31

node 1 size: 65536 MB

node 1 free: 63323 MB

node distances:

node   0   1

  0:  10  20

  1:  20  10



# uname -a

Linux <hostname> 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016
x86_64 x86_64 x86_64 GNU/Linux



# virsh version

Compiled against library: libvirt 2.0.0

Using library: libvirt 2.0.0

Using API: QEMU 2.0.0

Running hypervisor: QEMU 1.5.3



# cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-3.10.0-514.el7.x86_64 root=/dev/mapper/cl-root ro
crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet
LANG=en_US.UTF-8 intel_iommu=on iommu=pt default_hugepagesz=1G
hugepagesz=1G hugepages=16 hugepagesz=2M hugepages=4096



# mount

...

...

none on /dev/hugepages1G type hugetlbfs (rw,relatime,seclabel,pagesize=1G)

none on /dev/hugepages2M type hugetlbfs (rw,relatime,seclabel,pagesize=2M)

-----------


Test 1:  1G Huge page memoryBacking & memory binding per numa node, and
virtual numa nodes.

--------


<domain type='kvm'>

  <name>vm1</name>

  <uuid>62077ba4-9d7a-4b81-8dfb-b0cd55693cc2</uuid>

  <memory unit='KiB'>8388608</memory>

  <currentMemory unit='KiB'>8388608</currentMemory>

  <memtune>

    <hard_limit unit='KiB'>9437184</hard_limit>

  </memtune>

  <memoryBacking>

    <hugepages>

      <page size='1048576' unit='KiB' nodeset='0'/>

      <page size='1048576' unit='KiB' nodeset='1'/>

    </hugepages>

  </memoryBacking>

  <vcpu placement='static'>4</vcpu>

  <cputune>

    <vcpupin vcpu='0' cpuset='1'/>

    <vcpupin vcpu='1' cpuset='2'/>

    <vcpupin vcpu='2' cpuset='8'/>

    <vcpupin vcpu='3' cpuset='9'/>

  </cputune>

  <numatune>

    <memory mode='strict' nodeset='0-1'/>

    <memnode cellid='0' mode='strict' nodeset='0'/>

    <memnode cellid='1' mode='strict' nodeset='1'/>

  </numatune>

  <os>

    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>

    <boot dev='hd'/>

  </os>

  <features>

    <acpi/>

    <apic/>

  </features>

  <cpu mode='custom' match='exact'>

    <model fallback='allow'>IvyBridge</model>

    <numa>

      <cell id='0' cpus='0-1' memory='4194304' unit='KiB'/>

      <cell id='1' cpus='2-3' memory='4194304' unit='KiB'/>

    </numa>

  </cpu>

...



# virsh start vm1

error: Failed to start domain vm1

error: unsupported configuration: Per-node memory binding is not supported
with this QEMU


Test 2: 1G Huge page memoryBacking per NUMA node and virtual numa nodes.

------



<domain type='kvm'>

  <name>vm1</name>

  <uuid>62077ba4-9d7a-4b81-8dfb-b0cd55693cc2</uuid>

  <memory unit='KiB'>8388608</memory>

  <currentMemory unit='KiB'>8388608</currentMemory>

  <memtune>

    <hard_limit unit='KiB'>9437184</hard_limit>

  </memtune>

  <memoryBacking>

    <hugepages>

      <page size='1048576' unit='KiB' nodeset='0'/>

      <page size='1048576' unit='KiB' nodeset='1'/>

    </hugepages>

  </memoryBacking>

  <vcpu placement='static'>4</vcpu>

  <cputune>

    <vcpupin vcpu='0' cpuset='1'/>

    <vcpupin vcpu='1' cpuset='2'/>

    <vcpupin vcpu='2' cpuset='8'/>

    <vcpupin vcpu='3' cpuset='9'/>

  </cputune>

  <os>

    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>

    <boot dev='hd'/>

  </os>

  <features>

    <acpi/>

    <apic/>

  </features>

  <cpu mode='custom' match='exact'>

    <model fallback='allow'>IvyBridge</model>

    <numa>

      <cell id='0' cpus='0-1' memory='4194304' unit='KiB'/>

      <cell id='1' cpus='2-3' memory='4194304' unit='KiB'/>

    </numa>

  </cpu>

...

# virsh start vm1

error: Failed to start domain vm1

error: unsupported configuration: huge pages per NUMA node are not
supported with this QEMU



Test 3: Only virtual numa nodes.

------



<main type='kvm'>

  <name>vm1</name>

  <uuid>62077ba4-9d7a-4b81-8dfb-b0cd55693cc2</uuid>

  <memory unit='KiB'>8388608</memory>

  <currentMemory unit='KiB'>8388608</currentMemory>

  <memtune>

    <hard_limit unit='KiB'>9437184</hard_limit>

  </memtune>

  <vcpu placement='static'>4</vcpu>

  <cputune>

    <vcpupin vcpu='0' cpuset='1'/>

    <vcpupin vcpu='1' cpuset='2'/>

    <vcpupin vcpu='2' cpuset='8'/>

    <vcpupin vcpu='3' cpuset='9'/>

  </cputune>

  <os>

    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>

    <boot dev='hd'/>

  </os>

  <features>

    <acpi/>

    <apic/>

  </features>

  <cpu mode='custom' match='exact'>

    <model fallback='allow'>IvyBridge</model>

    <numa>

      <cell id='0' cpus='0-1' memory='4194304' unit='KiB'/>

      <cell id='1' cpus='2-3' memory='4194304' unit='KiB'/>

    </numa>

  </cpu>

...



# virsh start vm1



<Success and the guest OS shows the virtual NUMA nodes etc.>


Test 4: Only 1G huge page backing per NUMA node

------



<domain type='kvm'>

  <name>vm1</name>

  <uuid>62077ba4-9d7a-4b81-8dfb-b0cd55693cc2</uuid>

  <memory unit='KiB'>8388608</memory>

  <currentMemory unit='KiB'>8388608</currentMemory>

  <memtune>

    <hard_limit unit='KiB'>9437184</hard_limit>

  </memtune>

  <memoryBacking>

    <hugepages>

      <page size='1048576' unit='KiB' nodeset='0'/>

      <page size='1048576' unit='KiB' nodeset='1'/>

    </hugepages>

  </memoryBacking>

  <vcpu placement='static'>4</vcpu>

  <cputune>

    <vcpupin vcpu='0' cpuset='1'/>

    <vcpupin vcpu='1' cpuset='2'/>

    <vcpupin vcpu='2' cpuset='8'/>

    <vcpupin vcpu='3' cpuset='9'/>

  </cputune>

  <os>

    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>

    <boot dev='hd'/>

  </os>

  <features>

    <acpi/>

    <apic/>

  </features>

  <cpu mode='custom' match='exact'>

    <model fallback='allow'>IvyBridge</model>

  </cpu>



...



# virsh start vm1



<Success and the 1G pages on the host are consumed for backing VM's memory>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170426/c6108e9b/attachment-0001.htm>


More information about the libvir-list mailing list