Skip to content
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

any plans to support IO_URING on linux ? #80

Closed
RavikumarTulugu opened this issue Oct 25, 2024 · 2 comments
Closed

any plans to support IO_URING on linux ? #80

RavikumarTulugu opened this issue Oct 25, 2024 · 2 comments
Labels
enhancement New feature or request

Comments

@RavikumarTulugu
Copy link

Please plan iouring support on linux if not done already.
Thanks ,

@weiss weiss added the enhancement New feature or request label Oct 25, 2024
@weiss
Copy link
Member

weiss commented Oct 25, 2024

The underlying VM (BEAM) doesn't support io_uring so far. Adding support has been discussed and (re)considered just recently, but probably won't be available anytime soon. In theory, we could use custom socket code, but I don't think we want to go that route.

I can well image io_uring helping with CPU utilization and throughput, but note that TURN specifically has the problem that each and every packet must be (un)wrapped while being relayed (so there's no easy way to perform zero-copy I/O). I don't have numbers, but I'd assume this to be an even more significant bottleneck for TURN relaying compared to the syscall overhead avoided by io_uring. One way to reduce this bottleneck would be to perform the (un)wrapping within kernel space using eBPF, which would also reduce syscall overhead significantly. (Others had the same idea, by the way.) This is on my to-do list, but I can't give you a timeframe, sorry.

@RavikumarTulugu
Copy link
Author

thanks for the detailed explanation. yeah, ebpf + IO_URING is a killer combo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants