
Linux kernel: Add io_uring IO interface - jorangreef
http://git.kernel.dk/cgit/linux-block/commit/?h=for-next&id=8923ebc04818fcb506829591aa8704baefd661ec
======
htfy96
Introduction to io_uring on lwn:
[https://lwn.net/Articles/776703/](https://lwn.net/Articles/776703/)

------
newnewpdro
With spectre/meltdown mitigations increasing the cost of syscalls I imagine
this becomes quite significant.

Somewhat orthogonally, does anyone happen to know if the hardware fixes
eliminating the need for software mitigations still increase syscall cost
substantially? I imagine if you have to inhibit speculation across context
boundaries the cost is still higher than a pre-spectre world, even if done in
hardware...

~~~
nightfly
Last time I looked, the hardware mitigations were almost exactly as expensive
as the software ones.

~~~
wtallis
I'm not sure if there are even any true hardware mitigations actually shipping
yet. I think the closest we have are products that ship with stock microcode
implementing the same changes that aftermarket microcode updates applied to
existing products.

~~~
ac29
Some hardware fixes are already in place:
[https://www.anandtech.com/show/13301/spectre-and-meltdown-
in...](https://www.anandtech.com/show/13301/spectre-and-meltdown-in-hardware-
intel-clarifies-whiskey-lake-and-amber-lake)

------
mmastrac
This will be great when you can add splice ops to the ring in addition to
read/write/sync. Zero-copy between sockets with no syscall!

------
grandinj
This is impressive, but it adds yet another very complex io api to the Linux
list.

Compared to this Windows is looking more and more impressive and their api is
decades old.

I’m sure this is higher performing in some benchmark setup, but very little
cpu time is spent on kernel overhead for any heavy io application.

It would be nicer just to have a clean set of flexible asynchronous apis that
all shared a relatively simpler model.

~~~
unmole
> but very little cpu time is spent on kernel overhead for any heavy io
> application

I would really like to see some backing for that claim. In I/O heavy
applications that I've seen (Think performance enhancing proxies), syscalls
easily account for over half the CPU cycles.

~~~
grandinj
most of that is spent in the network stack, not the userspace->kernel layer

~~~
cma
[https://www.epicgames.com/fortnite/forums/news/announcements...](https://www.epicgames.com/fortnite/forums/news/announcements/132642-epic-
services-stability-update)

That was directly from userspace->kernel getting slowed down, to send on the
network.

------
tick_tock_tick
Interesting has anyone run any tests comparing this interface's performance to
epoll?

~~~
the8472
This isn't just for sockets and pipes. You can use it for disk IO too. This is
the One Ring.

------
alexeiz
The act of passing data through the io_uring interface should be called
"uring-ating."

