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>