io-uring
io_uring-echo-server
io-uring | io_uring-echo-server | |
---|---|---|
2 | 1 | |
1,064 | 358 | |
2.5% | - | |
7.3 | 3.6 | |
4 days ago | 3 months ago | |
Rust | C | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
io-uring
-
Create a data structure for low latency memory management
Depending on whether the system calls for accessing the network stack will become the bottleneck, you may also need to use io_uring with kernel side polling for this (briefly explained in this paper on page 15) in addition to pre-allocating your own buffers and avoiding copying memory where you can. You mention you are using tokio, it has a library for io_uring and there is also this vanilla io_uring library crate, but it's a bit more low level. Both are for linux only and I'm not familiar enough with Windows to say if there exists something similar in Rust for Windows systems (which has I/O Rings), maybe someone else can comment on that?
-
Window managers heavily lagging while Desktop environment doesn't
Hmm, nothing really jumps out for me in the pastes you have here, apart from this. What kernel are you running? Have you tried LTS?
io_uring-echo-server
-
Put an io_uring on it: Exploiting the Linux Kernel
> Network IO discussion: https://github.com/axboe/liburing/issues/536
I see an issue with a narrative but zero discussion at that link.
Furthermore, your io_uring benchmark being utilized in that issue isn't even batching CQE consumption. I've submitted a quick and dirty untested PR adding rudimentary batching at [0]. Frankly, what seems to be a constant din of poorly-written benchmarks portraying io_uring in a negative light vs. epoll is getting rather old.
[0] https://github.com/frevib/io_uring-echo-server/pull/16
What are some alternatives?
rust-blog - Educational blog posts for Rust beginners
rio - pure rust io_uring library, built on libc, thread & async friendly, misuse resistant
fluke - HTTP 1+2 in Rust, with io_uring & ktls
liburing
remote-pty - Tricking shells into interactive mode when local PTY's are not available
python-c-io_uring-example - Using io_uring Linux Kernel interface from Python by JITing C code with MetaCall.
kbio - Another Async IO Framework based on io_uring
async_io_uring - An event loop in Zig using io_uring and coroutines
Polyphony - Fine-grained concurrency for Ruby
ioucontext - A coöperative multitasking framework based on `liburing` and `libucontext`