-
-
Notifications
You must be signed in to change notification settings - Fork 627
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
Add support for io_uring #998
base: dev/3.0.0
Are you sure you want to change the base?
Conversation
proxy/src/main/java/com/velocitypowered/proxy/network/ConnectionManager.java
Show resolved
Hide resolved
This was already implemented in the https://github.com/PaperMC/Velocity/tree/experiment/io_uring branch, but I guess it didn't get merged due to the experimental status of Netty's implementation. |
I think somebody tried io_uring on paper recently and it went sideways, so this should probably be a configurable thing, afaik the thing is still a bit of a moving implementation and has not really been called "stable" yet |
zlib packet compression seems to be broken on io_uring on PaperMC having tried this last week. Should double check if that's the case here @skbeh |
@clrxbl I tested both libdeflate and Java compression, and both worked fine. |
6344a51
to
89a5f45
Compare
@electronicboy Added. |
If you're gonna add kqueue, why not add support for it aswell while at it? Seems pretty trivial to add it. Unlikely to be used by most since it's macOS / FreeBSD only, but the dependency is there so why not? |
@clrxbl The kqueue dependency will be removed once the new version of async-http-client is released. |
d8f49f5
to
2016c1e
Compare
Updating async-http-client appears to quietly break a lot of my proxy plugins, one public one being ViaVersion. Which makes me wonder whether this is a change that should be made to a Velocity 3.2.x release? |
|
@electronicboy It seems that there's no sane way to configure AHC to use specific transportFactory. |
Not sure why either of those matter? |
@electronicboy |
We're generally not going to update to a beta release of library mid cycle, so what AHC uses in its beta release is pretty much 100% irrelevant |
In their 2.x versions, they did not aware of io_uring. |
as it stands, this PR is pretty much blocked; We can't justify jumping a library towards a beta release midcycle, so that's generally a no-go; We could stick to 2.x and just not use a shared worker group if using io_uring, but, not sure io_uring should also be opt in, not opt out |
c7eef1c
to
d864a00
Compare
@electronicboy The option is made to opt in and the Kqueue dependency is removed. |
this is due to timing the compression packet sending incorrectly on io_uring. we use io_uring in prod without issues (both on server & velocity). will likely push a PR to Paper with this fixed later |
fwiw, async http client has been removed from velocity, I have no idea what to do on the basis of this PR, I generally have little investment into IO_URING, so, I'm not sure what the other contributors thing, at the very least, having the thing opt-in at least makes it mergable to me |
We'll likely do #1380 instead, where the io_uring transport becomes stable, and we make it the default for systems that support it. |
No description provided.