Bug 1237220
Summary: | Fail to create NUMA guest with <nosharepages/> | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Alex Williamson <alex.williamson> |
Component: | qemu-kvm-rhev | Assignee: | Eduardo Habkost <ehabkost> |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | 7.2 | CC: | alex.williamson, hhuang, huding, juzhang, knoel, marcel, michen, mprivozn, mrezanin, pezhang, virt-maint, xfu |
Target Milestone: | rc | Keywords: | Regression |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | qemu-kvm-rhev-2.3.0-13.el7 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2015-12-04 16:48:14 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Alex Williamson
2015-06-30 14:44:32 UTC
This works with qemu-kvm-rhev-2.1.2-23.el7_1.4.x86_64 therefore adding regression keyword Here's the history afaict, 2.1.0 was broken wrt numa pinning and fixed by: commit 288d3322022d6ad646407f3ca6f1a6a746565b9a Author: Michael S. Tsirkin <mst> Date: Wed Aug 13 13:50:24 2014 +0200 hostmem: set MPOL_MF_MOVE When memory is allocated on a wrong node, MPOL_MF_STRICT doesn't move it - it just fails the allocation. A simple way to reproduce the failure is with mlock=on realtime feature. The code comment actually says: "ensure policy won't be ignored" so setting MPOL_MF_MOVE seems like a better way to do this. Cc: qemu-stable Signed-off-by: Michael S. Tsirkin <mst> This was part of v2.1.1 and therefore included in our v2.1.2 The VM described in comment 0 continued to work until: commit 49d2e648e8087d154d8bf8b91f27c8e05e79d5a6 Author: Marcel Apfelbaum <marcel.a> Date: Tue Dec 16 16:58:05 2014 +0000 machine: remove qemu_machine_opts global list QEMU has support for options per machine, keeping a global list of options is no longer necessary. Signed-off-by: Marcel Apfelbaum <marcel.a> Reviewed-by: Alexander Graf <agraf> Reviewed-by: Greg Bellows <greg.bellows> Message-id: 1418217570-15517-2-git-send-email-marcel.a Signed-off-by: Peter Maydell <peter.maydell> At which point libvirt would error with: error: Failed to start domain 2node0-1 error: unsupported configuration: disable shared memory is not available with this QEMU binary An attempt was made to fix this in: commit 0a7cf217d81161e36af2344e911d56d4f9fef9c5 Author: Marcel Apfelbaum <marcel> Date: Wed Apr 1 19:47:21 2015 +0300 util/qemu-config: fix regression of qmp_query_command_line_options Commit 49d2e64 (machine: remove qemu_machine_opts global list) made machine options specific to machine sub-type, leaving the qemu_machine_opts desc array empty. Sadly this is the place qmp_query_command_line_options is looking for supported options. As a fix for for 2.3 the machine_qemu_opts (the generic ones) are restored only for qemu-config scope. We need to find a better fix for 2.4. Reported-by: Tony Krowiak <akrowiak.ibm.com> Signed-off-by: Marcel Apfelbaum <marcel> Message-Id: <1427906841-1576-1-git-send-email-marcel> Signed-off-by: Paolo Bonzini <pbonzini> But this just gets us to the current situation where QEMU v2.3 is broken, as well as current upstream, with the following error: error: Failed to start domain 2node0-1 error: internal error: process exited while connecting to monitor: qemu-system-x86_64: util/qemu-option.c:387: qemu_opt_get_bool_helper: Assertion `opt->desc && opt->desc->type == QEMU_OPT_BOOL' failed. Hi Alex. QE found mem-merge=off cause this bug. If use mem-merge=on(this is default value) qemu-kvm process works. Before, QE tested "-object memory-backend-ram" with mem-merge's default value. Do QE need to cover this two scenarios(mem-merge=on|off)? If need, I will add this scenario to test plan and test case. Thanks. from qemu-kvm manual mem-merge=on|off Enables or disables memory merge support. This feature, when supported by the host, de-duplicates identical memory pages among VMs instances (enabled by default) AFAICT it's a supported option and something a user might reasonably turn on, especially if they're using hugepages or device assignment. (In reply to Alex Williamson from comment #6) > AFAICT it's a supported option and something a user might reasonably turn > on, especially if they're using hugepages or device assignment. Got it, the default should be on according to "man qemu-kvm" but I would like to double confirm with you, it's right? (QE can not find this option via 'info qtree' on HMP) (In reply to FuXiangChun from comment #7) > (In reply to Alex Williamson from comment #6) > > AFAICT it's a supported option and something a user might reasonably turn > > on, especially if they're using hugepages or device assignment. > > Got it, the default should be on according to "man qemu-kvm" but I would > like to double confirm with you, it's right? (QE can not find this option > via 'info qtree' on HMP) Yes, the <nosharepages/> libvirt XML option translates to mem-merge=off on the QEMU commandline. The default is 'on'. Fix included in qemu-kvm-rhev-2.3.0-13.el7 summary: I re-tested this bug with qemu-kvm-rhev-2.3.0-13.el7.x86_64. And the results prove that this bug has been fixed well. detail(mem-merge=off and mem-merge=on both are OK): #/usr/libexec/qemu-kvm -name 2node0-1 -machine pc-i440fx-rhel7.1.0,accel=kvm,usb=off,mem-merge=off -cpu host -m 4096 -realtime mlock=on -smp 4,sockets=4,cores=1,threads=1 -object memory-backend-ram,id=ram-node0,size=2147483648,host-nodes=0,policy=bind -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 -object memory-backend-ram,id=ram-node1,size=2147483648,host-nodes=1,policy=bind -numa node,nodeid=1,cpus=2-3,memdev=ram-node1 -uuid abc65d75-e745-4ed0-8cf9-1b849c1f031f -nographic -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/2node0-1.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -msg timestamp=on -monitor stdio QEMU 2.3.0 monitor - type 'help' for more information (qemu) info status VM status: running # /usr/libexec/qemu-kvm -name 2node0-1 -machine pc-i440fx-rhel7.1.0,accel=kvm,usb=off,mem-merge=on -cpu host -m 4096 -realtime mlock=on -smp 4,sockets=4,cores=1,threads=1 -object memory-backend-ram,id=ram-node0,size=2147483648,host-nodes=0,policy=bind -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 -object memory-backend-ram,id=ram-node1,size=2147483648,host-nodes=1,policy=bind -numa node,nodeid=1,cpus=2-3,memdev=ram-node1 -uuid abc65d75-e745-4ed0-8cf9-1b849c1f031f -nographic -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/2node0-1.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -msg timestamp=on -monitor stdio QEMU 2.3.0 monitor - type 'help' for more information (qemu) info status VM status: running According to comment12, set this issue as verified. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-2546.html |