Replies: 2 comments 1 reply
-
Which benchmarks do you refer to? These benchmarks https://github.com/frevib/io_uring-echo-server/blob/master/benchmarks/benchmarks.md use a stable kernel (5.6), a likely stable liburing and likely stable benchmarking code. We already know the main gain from io_uring is less syscalls and batching of requests. Also io_uring has more features like poll mode that could improve performance. Besides that, it performs about the same as epoll. Netty is seeing benefits from both less sys calls and batching: https://twitter.com/normanmaurer/status/1311221843903295488?s=21 |
Beta Was this translation helpful? Give feedback.
-
Hi Roman, It depends. If you can make a test that is syscall heavy, or if you optimize for batching a lot you could likely make it improve more than 60%. You could e.g. trade in latency for increasing batch size. In terms of “raw” IO io_uring should be about equally performant as epoll, for network IO at least. The Netty developers did manage some huge performance improvements, while some other popular programs cancelled io_uring implementation because they saw no improvement. |
Beta Was this translation helpful? Give feedback.
-
60% improvement is cited in the original announcement. I wonder if tokio-iouring authors tried to validate this claim.
If you look at the only open issue in that repository you will see that @frevib confirms that the results are probably off since they are based on non-stable and outdated kernel, buggy liburing library and buggy benchmarking code.
Beta Was this translation helpful? Give feedback.
All reactions