Bug 1769597

Summary: QEMU support for io_uring
Product: Red Hat Enterprise Linux Advanced Virtualization Reporter: Ademar Reis <areis>
Component: qemu-kvmAssignee: Stefano Garzarella <sgarzare>
qemu-kvm sub component: Storage QA Contact: qing.wang <qinwang>
Status: CLOSED DEFERRED Docs Contact:
Severity: medium    
Priority: medium CC: berrange, chayang, coli, jinzhao, jusual, juzhang, knoel, lmen, qzhang, sgarzare, virt-maint, wquan, yama, zhenyzha
Version: 8.0Keywords: FutureFeature, Triaged
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-v5.0.0 Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of:
: 1947230 (view as bug list) Environment:
Last Closed: 2021-05-06 07:30:28 UTC 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: 1706143, 1758680, 1862551, 1881561    
Bug Blocks: 1769598, 1946935, 1947230    

Description Ademar Reis 2019-11-06 22:46:07 UTC
io_uring is a Linux API for asynchronous I/O. It is designed for higher performance than the older Linux AIO API that QEMU supports.

In QEMU, io_uring is an alternative AIO engine. Instead of specifying -drive aio=threads or -drive aio=native, use -drive aio=io_uring.

The kernel feature (io_uring itself) is described in this lwn.net article: https://lwn.net/Articles/776703/

The QEMU implementation was started as an Outreachy project and is expected to be merged in QEMU-4.2. The upstream page tracking progress is https://wiki.qemu.org/Features/IOUring

Comment 2 Stefan Hajnoczi 2019-11-07 09:32:40 UTC
The QEMU feature will be merged in 4.3.  The feature was not mature enough for 4.2 and further work would be required to achieve noticeable performance improvements over Linux AIO (fd registration, memory buffer registration, and kernel-side polling).

Comment 3 Daniel Berrangé 2019-11-07 10:00:36 UTC
NB, management apps like OpenStack will not expose this kind of low level knob to users. They require performance results to demonstrate which AIO (threads, native, uring) is the best performing in the variety of different storage setups, so that they can automatically pick a sensible AIO option for each storage setup used.

We previously had the perf team do this work for AIO threads vs native, so we need a new set of results to include uring. I think such performance result data & usage recommendations should be considered a blocker for calling this a supported feature in RHEL, even if it is merged in upstream QEMU already.

Comment 6 Ademar Reis 2020-02-05 23:07:53 UTC
QEMU has been recently split into sub-components and as a one-time operation to avoid breakage of tools, we are setting the QEMU sub-component of this BZ to "General". Please review and change the sub-component if necessary the next time you review this BZ. Thanks

Comment 17 qing.wang 2021-04-06 10:09:30 UTC
This is future feature issue, Do we have plan to support it ? it is ok for me to close it due to stale date.

Comment 18 Stefano Garzarella 2021-04-08 14:51:45 UTC
(In reply to qing.wang from comment #17)
> This is future feature issue, Do we have plan to support it ? it is ok for
> me to close it due to stale date.

Yes, we plan to support it, but until there's kernel support we can't do much.

Comment 19 RHEL Program Management 2021-05-06 07:30:28 UTC
After evaluating this issue, there are no plans to address it further or fix it in an upcoming release.  Therefore, it is being closed.  If plans change such that this issue will be fixed in an upcoming release, then the bug can be reopened.

Comment 20 qing.wang 2021-05-10 01:20:07 UTC
QE agree to close it.