Bug 1806887 - High IOPS storage performance optimizations
Summary: High IOPS storage performance optimizations
Alias: None
Product: Red Hat Enterprise Linux Advanced Virtualization
Classification: Red Hat
Component: qemu-kvm
Version: 8.2
Hardware: Unspecified
OS: Unspecified
Target Milestone: rc
: 8.0
Assignee: Stefan Hajnoczi
QA Contact: Yanhui Ma
Depends On:
Blocks: 1803785
TreeView+ depends on / blocked
Reported: 2020-02-25 09:34 UTC by Stefan Hajnoczi
Modified: 2020-12-20 06:48 UTC (History)
7 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2020-08-26 10:10:06 UTC
Type: Bug
Target Upstream Version:

Attachments (Terms of Use)

Description Stefan Hajnoczi 2020-02-25 09:34:36 UTC
A number of storage performance optimizations for high IOPS devices are being developed for QEMU.  They should be included in RHEL-AV qemu-kvm once complete.

The list of commits so far is:

7391d34c3c aio-posix: make AioHandler dispatch O(1) with epoll
4749079ce0 aio-posix: make AioHandler deletion O(1)
195ed8cb36 qemu/queue.h: add QLIST_SAFE_REMOVE()
ca8c6b2275 aio-posix: don't pass ns timeout to epoll_wait()
ff29ed3a33 aio-posix: fix use after leaving scope in aio_poll()
8c6b0356b5 util/async: make bh_aio_poll() O(1)
f25c0b5479 aio-posix: avoid reacquiring rcu_read_lock() when polling

Comment 1 Stefan Hajnoczi 2020-02-26 14:39:08 UTC
920d557e5a memory: batch allocate ioeventfds[] in address_space_update_ioeventfds()

Comment 2 Stefan Hajnoczi 2020-03-14 13:22:52 UTC
d37d0e365a aio-posix: remove idle poll handlers to improve scalability
aa38e19f05 aio-posix: support userspace polling of fd monitoring
73fd282e7b aio-posix: add io_uring fd monitoring implementation
b321051cf4 aio-posix: simplify FDMonOps->update() prototype
1f050a4690 aio-posix: extract ppoll(2) and epoll(7) fd monitoring
3aa221b382 aio-posix: move RCU_READ_LOCK() into run_poll_handlers()
e4346192f1 aio-posix: completely stop polling when disabled
c39cbedb54 aio-posix: remove confusing QLIST_SAFE_REMOVE()
a31ca6801c qemu/queue.h: clear linked list pointers on remove

Comment 3 Stefan Hajnoczi 2020-04-06 10:08:02 UTC
ff807d5592 aio-posix: fix io_uring with external events
ae60ab7eb2 aio-posix: fix test-aio /aio/event/wait with fdmon-io_uring

Comment 4 Stefan Hajnoczi 2020-04-15 11:36:37 UTC
636b836d5f aio-posix: signal-proof fdmon-io_uring

Comment 5 Stefan Hajnoczi 2020-08-25 14:53:53 UTC
44277bf914 aio-posix: keep aio_notify_me disabled during polling
601829f88e async: always set ctx->notified in aio_notify()
c13be5a1bf async: rename event_notifier_dummy_cb/poll()

Comment 6 Stefan Hajnoczi 2020-08-26 10:10:06 UTC
All commits before Comment 5 are in v5.1.0 and will be included in the downstream rebase.

Most commits improve scalability so that multi-queue can be enabled when there are 100+ devices. However, multi-queue is not yet enabled by default.

Therefore I am closing this BZ for now. There is no new feature to track here.

I will file BZs for specific features as they become ready.

Note You need to log in before you can comment on or make changes to this bug.