-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
implement io_uring? #1355
Comments
It's not a priority because a) none of my computers perform better with io_uring (as of Linux 5.13, things are being optimized for 5.16 but still) |
a) eventually will be there. d) pls get the proxy example up if possible. really hope to try it out as a proxy. but do get quic out first and io_uring coz i intend to build on the proxy part. seems uwebsocket http as proxy can be the best thing since slice bread. |
I've checked with io_uring since I first heard of it and never seen any improvement on my machines (I have old Intel machines). On ARM64 I can see a small gain now with 5.13, about 13% better in ideal scenarios. This is on Raspberry PI 4, however this is with mitigations on. Similar can be seen on my old Intel machines, but I'm still pretty sure mitigations off still runs faster with epoll. If you plan to shove tons of data to from kernel space then obviously io_uring is better since you can map memory and pass it zero copy, but we are not doing that here we only care about small message sending and I still can't see any significant wins that would still be there with mitigations off. Also it takes time for these new kernels to become mainstream and spread to the audience. I'm going to see if I can beat my records on this Raspberry PI 4 over LAN, but this all still runs insignificantly better/worse for motivating such a big architectural change (with all the drawbacks associated). |
I wouldn't expect any significant gains from rpi unfortunately, although
5.15 has further io_uring optimisation that may make a difference.
Ryzen9 seems to be getting the most benefit from it currently having
clocked over 5M iops per core
…On Sun, 10 Oct 2021, 13:50 Alex Hultman, ***@***.***> wrote:
I've checked with io_uring since I first heard of it and never seen any
improvement on my machines (I have old Intel machines). On ARM64 I can see
a small gain now with 5.13, about 13% better in ideal scenarios.
This is on Raspberry PI 4, however this is with mitigations on. Similar
can be seen on my old Intel machines, but I'm still pretty sure mitigations
off still runs faster with epoll.
If you plan to shove tons of data to from kernel space then obviously
io_uring is better since you can map memory and pass it zero copy, but we
are not doing that here we only care about small message sending and I
still can't see any significant wins that would still be there with
mitigations off.
Also it takes time for these new kernels to become mainstream and spread
to the audience.
I'm going to see if I can beat my records on this Raspberry PI 4 over LAN,
but this all still runs insignificantly better/worse for motivating such a
big architectural change (with all the drawbacks associated).
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#1355 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABXOFONZ5FLXNVO5JBB6LW3UGF4Z5ANCNFSM5FHLGC2A>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
When I started testing io_uring back in 5.4 (or whatever) it had really bad perf. for my machines. It definitely did not perform any better than epoll in fact it sucked really hard (despite everyone blindly jumping on the hype train). Today with 5.13 and 5.14 it does seem to run at least as fast as epoll, even with mitigations off, so they are making progress. However I still cannot see any significant perf improvement for the cases I'm testing - it performs the same or like 1% better. I'm talking about stuff like getting 128k msg/sec vs getting 130 msg/sec on all CPU-cores or like 55 msg/sec vs. 51-60 msg/sec on a single CPU-core. Sure, I can get 2 more msg/sec in best possible case but that's insignificant and statistically uncertain. The only conclusion I can make right now is - it does NOT perform WORSE than epoll today. But that's not really enough motivation to bother. Come back in a year and I can test it again, see where perf. is at. Whenever there is SIGNIFICANT perf. improvement I will certainly bake it into uSockets. |
Here's the ping for "a year" later (well.. make that well over 2 years). |
It is tracked here #1603 |
implement io_uring?
The text was updated successfully, but these errors were encountered: