Bug 1947230
| Summary: | Enable QEMU support for io_uring in RHEL9 | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 9 | Reporter: | Han Han <hhan> |
| Component: | qemu-kvm | Assignee: | Stefan Hajnoczi <stefanha> |
| qemu-kvm sub component: | Storage | QA Contact: | qing.wang <qinwang> |
| Status: | VERIFIED --- | Docs Contact: | |
| Severity: | medium | ||
| Priority: | medium | CC: | berrange, chayang, coli, jinzhao, jmoyer, jusual, juzhang, knoel, kwolf, lmen, makhomed, mrezanin, qinwang, qzhang, sgarzare, smitterl, stefanha, vgoyal, virt-maint, wquan, yama, zhenyzha |
| Version: | 9.2 | Keywords: | FutureFeature, Triaged |
| Target Milestone: | beta | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | qemu-kvm-8.0.0-4.el9 | Doc Type: | Enhancement |
| Doc Text: | Story Points: | --- | |
| Clone Of: | 1769597 | Environment: | |
| Last Closed: | Type: | Feature Request | |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | 2068237, 1706143, 1758680, 1769597, 1862551 | ||
| Bug Blocks: | 1946936, 1769598 | ||
|
Comment 1
Jeff Moyer
2021-06-02 17:54:26 UTC
Tested on libvirt-9.3.0-2.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 liburing-0.7-7.el9.x86_64 kernel-5.14.0-316.el9.x86_64. However the io_uring doesn't work.
Steps:
1. Start a domain with the disk for io_uring
➜ ~ virsh dumpxml rhel-9.2 --xpath //disk
<disk type="file" device="disk">
<driver name="qemu" type="qcow2" cache="none" io="io_uring" copy_on_read="on" ats="on" packed="on"/>
<source file="/var/lib/libvirt/images/rhel-9.2.qcow2"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
</disk>
➜ ~ virsh start rhel-9.2 --console
error: Failed to start domain 'rhel-9.2'
error: internal error: process exited while connecting to monitor: 2023-05-23T04:24:28.614198Z qemu-kvm: -blockdev {"driver":"file","filename":"/var/lib/libvirt/images/rhel-9.2.qcow2","aio":"io_uring","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}: Unable to use io_uring: failed to init linux io_uring ring: Function not implemented
It seems the issue is from kernel.
See also https://bugzilla.redhat.com/show_bug.cgi?id=2068237#c79
(In reply to Han Han from comment #19) > Tested on libvirt-9.3.0-2.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 > liburing-0.7-7.el9.x86_64 kernel-5.14.0-316.el9.x86_64. However the io_uring > doesn't work. > Steps: > 1. Start a domain with the disk for io_uring > ➜ ~ virsh dumpxml rhel-9.2 --xpath //disk > <disk type="file" device="disk"> > <driver name="qemu" type="qcow2" cache="none" io="io_uring" > copy_on_read="on" ats="on" packed="on"/> > <source file="/var/lib/libvirt/images/rhel-9.2.qcow2"/> > <target dev="vda" bus="virtio"/> > <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/> > </disk> > > > ➜ ~ virsh start rhel-9.2 --console > error: Failed to start domain 'rhel-9.2' > error: internal error: process exited while connecting to monitor: > 2023-05-23T04:24:28.614198Z qemu-kvm: -blockdev > {"driver":"file","filename":"/var/lib/libvirt/images/rhel-9.2.qcow2","aio": > "io_uring","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush": > false},"auto-read-only":true,"discard":"unmap"}: Unable to use io_uring: > failed to init linux io_uring ring: Function not implemented > > It seems the issue is from kernel. > See also Red Hathttps://bugzilla.redhat.com/show_bug.cgi?id=2068237#c79 This feature need kernel support ,please see https://bugzilla.redhat.com/show_bug.cgi?id=1947230#c16 (In reply to qing.wang from comment #20) > (In reply to Han Han from comment #19) > > Tested on libvirt-9.3.0-2.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 > > liburing-0.7-7.el9.x86_64 kernel-5.14.0-316.el9.x86_64. However the io_uring > > doesn't work. > > Steps: > > 1. Start a domain with the disk for io_uring > > ➜ ~ virsh dumpxml rhel-9.2 --xpath //disk > > <disk type="file" device="disk"> > > <driver name="qemu" type="qcow2" cache="none" io="io_uring" > > copy_on_read="on" ats="on" packed="on"/> > > <source file="/var/lib/libvirt/images/rhel-9.2.qcow2"/> > > <target dev="vda" bus="virtio"/> > > <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/> > > </disk> > > > > > > ➜ ~ virsh start rhel-9.2 --console > > error: Failed to start domain 'rhel-9.2' > > error: internal error: process exited while connecting to monitor: > > 2023-05-23T04:24:28.614198Z qemu-kvm: -blockdev > > {"driver":"file","filename":"/var/lib/libvirt/images/rhel-9.2.qcow2","aio": > > "io_uring","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush": > > false},"auto-read-only":true,"discard":"unmap"}: Unable to use io_uring: > > failed to init linux io_uring ring: Function not implemented > > > > It seems the issue is from kernel. > > See also Red Hathttps://bugzilla.redhat.com/show_bug.cgi?id=2068237#c79 > > This feature need kernel support ,please see > https://bugzilla.redhat.com/show_bug.cgi?id=1947230#c16 It should have been fixed in kernel. The kernel fixed version is kernel-5.14.0-315.el9, while my test version is kernel-5.14.0-316.el9.x86_64 In RHEL 9.3, io_uring still needs to be explicitly enabled in the kernel command line. See Stefan's comment in the merge request:
> Note that the "io_uring.enable=y" host kernel parameter is required because Linux io_uring will be disabled by default in CentOS Stream.
Did you set this kernel parameter when booting the host?
(In reply to Han Han from comment #21) > (In reply to qing.wang from comment #20) > > (In reply to Han Han from comment #19) > > > Tested on libvirt-9.3.0-2.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 > > > liburing-0.7-7.el9.x86_64 kernel-5.14.0-316.el9.x86_64. However the io_uring > > > doesn't work. > > > Steps: > > > 1. Start a domain with the disk for io_uring > > > ➜ ~ virsh dumpxml rhel-9.2 --xpath //disk > > > <disk type="file" device="disk"> > > > <driver name="qemu" type="qcow2" cache="none" io="io_uring" > > > copy_on_read="on" ats="on" packed="on"/> > > > <source file="/var/lib/libvirt/images/rhel-9.2.qcow2"/> > > > <target dev="vda" bus="virtio"/> > > > <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/> > > > </disk> > > > > > > > > > ➜ ~ virsh start rhel-9.2 --console > > > error: Failed to start domain 'rhel-9.2' > > > error: internal error: process exited while connecting to monitor: > > > 2023-05-23T04:24:28.614198Z qemu-kvm: -blockdev > > > {"driver":"file","filename":"/var/lib/libvirt/images/rhel-9.2.qcow2","aio": > > > "io_uring","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush": > > > false},"auto-read-only":true,"discard":"unmap"}: Unable to use io_uring: > > > failed to init linux io_uring ring: Function not implemented > > > > > > It seems the issue is from kernel. > > > See also Red Hathttps://bugzilla.redhat.com/show_bug.cgi?id=2068237#c79 > > > > This feature need kernel support ,please see > > https://bugzilla.redhat.com/show_bug.cgi?id=1947230#c16 > > It should have been fixed in kernel. The kernel fixed version is > kernel-5.14.0-315.el9, while my test version is kernel-5.14.0-316.el9.x86_64 It works after adding io_uring.enable=y in the kernel command line. Red Hat Enterprise Linux release 9.3 Beta (Plow) 5.14.0-316.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 seabios-bin-1.16.1-1.el9.noarch edk2-ovmf-20230301gitf80f052277c8-4.el9.noarch libvirt-9.3.0-2.el9.x86_64 virtio-win-prewhql-0.1-236.iso QE bot(pre verify): Set 'Verified:Tested,SanityOnly' as gating/tier1 test pass. Psss regression test with Red Hat Enterprise Linux release 9.3 Beta (Plow) 5.14.0-316.el9.x86_64 qemu-kvm-8.0.0-4.el9.x86_64 seabios-bin-1.16.1-1.el9.noarch edk2-ovmf-20230301gitf80f052277c8-4.el9.noarch libvirt-9.3.0-2.el9.x86_64 virtio-win-prewhql-0.1-237.iso python ConfigTest.py --category=virtual_block_device --iothread_scheme=roundrobin --nr_iothreads=2 --platform=x86_64 --guestname=RHEL.9.2.0 --driveformat=virtio_scsi --nicmodel=virtio_net --imageformat=qcow2 --machines=i440fx --customsparams="vm_mem_limit = 12G\nimage_aio=io_uring" --firmware=default_bios --netdst=virbr0 |