Features/IOUring
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.
Aarushi Mehta is implementing io_uring support in QEMU as part of the Outreachy internship program.
Code
- Aarushi's git repo: https://github.com/weatherwaxed/qemu/tree/mirroraio
Plan
Task/Week | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 - Extend block/file-posix.c to use io_uring. | x | x | x | |||||||||
2 - Add polling mode support for completions. | x | x | x | |||||||||
3 - Add support to register file descriptors. | x | |||||||||||
4 - Add polling mode support for submissions. | x | x | ||||||||||
5 - Add support to register memory buffers. | x | x | ||||||||||
6 - Add a fast path when QEMU block layer features are not in use . | x | x | x | |||||||||
7 - Complete reporting of all benchmarking with io_uring. | x |
Status
Early development. Not yet ready for testing.
How to use it
io_uring is an alternative AIO engine in QEMU. Instead of specifying -drive aio=threads
or -drive aio=native
, use -drive aio=io_uring
.