27

Recently I've been seeing this in different forums. As far as I can tell from reading some forum discussions it is something to do with input and output. What exactly is io_uring?

Anon
  • 6,306
  • 2
  • 38
  • 56
Amani
  • 16,245
  • 29
  • 103
  • 153

1 Answers1

46

io_uring is a (new as of mid 2019) Linux kernel interface to efficiently allow you to send and receive data asynchronously. It was originally designed to target block devices and files but has since gained the ability to work with things like network sockets.

Unlike something like epoll(), it is built around a completion model rather than a readiness model. This is desirable because other operating systems have used the completion model successfully for some time. io_uring provides something competitive and complete for Linux without the drawbacks the previous Linux AIO interface has.

The author of io_uring has written a PDF document titled Efficient IO with io_uring which discusses its usage in a technical fashion. A gentler introduction is provided by the Lord of the io_uring guide. You can read ScyllaDB developer Glauber Costa proselytize it in How io_uring and eBPF Will Revolutionize Programming in Linux. Lastly, LWN.net has written about io_uring many times.

(Shameless plug: I've written a more linky answer on the "Is there really no asynchronous block I/O on Linux?" question)

Anon
  • 6,306
  • 2
  • 38
  • 56
  • Is there any new articles on the latest progresses of io_uring? It seems that there have got a lot more new features added into io_uring in the past year but I couldn't find any new articles on these latest progresses. – user534498 Jan 29 '21 at 08:56
  • @user534498 Check out the [LWN io_uring articles](https://lwn.net/Kernel/Index/#io_uring) (if you find that interesting I would recommend taking out a subscription to fund that type of journalism). If you are OK with changelogs you can just read the [KernelNewbies changes for those kernels](https://kernelnewbies.org/LinuxVersions) past the one you know about. – Anon Jan 29 '21 at 20:48