Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Yes, io_uring, a linux subsystem, is clearly just a cargo cult feature for people who don't know what they're doing.


Last I saw there was no substantial evidence of io_uring delivering a significant improvement over epoll, but I haven't looked in the last year. I wouldn't assume it is good just because it is in Linux (this is coming from someone who uses Linux exclusively)


Up to 2.44x faster for network zerocopy send: https://lore.kernel.org/io-uring/cover.1638282789.git.asml.s...

Up to 1.6x faster than epoll: https://twitter.com/axboe/status/1362271500489793539

io_uring 11% faster for non-polled IO: https://twitter.com/axboe/status/1465358880502861829/photo/1

And it's not like io_uring is complete. With every kernel release the gap over epoll gets bigger.


I was unable to replicate these results, and neither can other people. I'll look into it again though and see.

https://github.com/axboe/liburing/issues/189

edit: I'm not sure why I'm unable to reply to the comment below but I don't think anyone is being unnecessarily combative. I linked it twice because it is relevant to both replies to my comment. There is useful information in that thread if you read it end to end. What it does demonstrate is io_uring isn't a clear cut improvement over a much simpler approach. That may change in the future as it is improved though.


I really don't see why you've chosen to link to that github issue multiple times in this thread. The discussion in that issue doesn't convincingly demonstrate anything except that some people are trying to be unnecessarily combative about io_uring. We don't need to be dragging that attitude into HN threads. If you want to talk about some real performance problems with io_uring, find a way to do so without that baggage.


I found that io_uring socket latency is about 25% higher than epoll in my own benchmarks.

io_uring should be faster by design but it currently doesn’t seem to be. Maybe disk io is a different story.


I'm testing io_uring for file I/O for a database engine, which is a very different code path than networking with epoll, and so far I've been disappointed to find it roughly 20% slower than my userspace thread pool doing the same thing for that task.

Most likely there is some tweak to batching and maybe SQE submission watermarks, but I haven't found the formula yet.

I was surprised to find the sqpoll thread spins instead of a fast timer. Seems like a contention problem on a single core system, which still exist in VMs, etc.


I don't assume it's good because of Linux, I have a generally negative view of Linux. It's just stupid to attribute io_uring to rust or call it cargo culting for Rust to use io_uring. The two projects are unrelated.

As for performance, I wouldn't judge based on a year ago, obviously a lot has changed since then - you can find numbers if you'd like, I saw the maintainer posting benchmarks only a few weeks ago.


Yea, I'll have to check it out again. I see very mixed results, it is likely io_uring may not fully replace epoll for all situations as some people thought it would. That's fine though

https://github.com/axboe/liburing/issues/189




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: