Features/IOUring: Difference between revisions

From QEMU
(Created page with "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 s...")
 
 
(3 intermediate revisions by the same user not shown)
Line 3: Line 3:
Aarushi Mehta is implementing io_uring support in QEMU as part of the Outreachy internship program.
Aarushi Mehta is implementing io_uring support in QEMU as part of the Outreachy internship program.


=Code=
==Code==
* Aarushi's git repo: https://github.com/weatherwaxed/qemu/tree/mirroraio
* Aarushi's git repo: https://github.com/rooshm/qemu/tree/io_uring


=Status=
==Plan==
{|class="wikitable" style="font-size: small; text-align: center; table-layout: fixed;"
! 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.
Early development.  Not yet ready for testing.


=How to use it=
==How to use it==
io_uring is an alternative AIO engine in QEMU.  Instead of specifying <code>-drive aio=threads</code> or <code>-drive aio=native</code>, use <code>-drive aio=io_uring</code>.
io_uring is an alternative AIO engine in QEMU.  Instead of specifying <code>-drive aio=threads</code> or <code>-drive aio=native</code>, use <code>-drive aio=io_uring</code>.
==Details==
* Aarushi Mehta <mehta.aaru20@gmail.com> ("roosh" on IRC)
* Mentors: Julia Suvorova <jusual@mail.ru> ("jusual" on IRC), Stefan Hajnoczi <stefanha@redhat.com> ("stefanha" on IRC)


[[Category:GSoC Project]]
[[Category:GSoC Project]]

Latest revision as of 18:17, 23 May 2019

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

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.

Details

  • Aarushi Mehta <mehta.aaru20@gmail.com> ("roosh" on IRC)
  • Mentors: Julia Suvorova <jusual@mail.ru> ("jusual" on IRC), Stefan Hajnoczi <stefanha@redhat.com> ("stefanha" on IRC)