Redox's new ring buffers make I/O 15 times faster than syscalls
Redox: Ring Buffers Project Summary
The Redox OS team wrapped up an NLnet-funded project bringing io_uring-style ring buffers to userspace. Applications now submit requests directly to schemes like RamFS and NVMed through shared memory, with no kernel involvement and no data copies. Benchmarks show the new interface running 14-15x faster than synchronous syscalls. Alongside it, the team built an async executor for drivers and shaved 15-20% off IPC latency by letting clients switch straight to a scheme and skip the scheduler.
Since the System V ABI clobbers all vector registers for all function calls, it is almost zero-cost to also define Redox's syscall ABI to do so.
- digikata
Interesting read keeping in mind this is two degrees of separation from NVMe queues and their atomic doorbell head/tail registers.
- happyPersonR
This is cool stuff !!
Would love to see what other things could benefit from this beyond storage. Maybe like BT or similar wireless.
- rvz
This is great work by the Redox team. This might be over the heads of many HNers who are undergoing skill atrophy in real time and addicted to agents, given that 4 hours and less than 10 comments on a highly technical blog post about Rust and asynchronous I/O in Redox.
This project is vehemently against AI usage of any kind, so I can trust that the contents of this post has been checked and written by someone who has read the code and knows what they are doing.
> The Linux io_uring interface allows the user to submit one or more I/O operations to the kernel, which are then processed in an asynchronous fashion without blocking the userspace process. Redox, being a microkernel, handles I/O in userspace scheme processes rather than in the kernel.
io_uring is incredibly fast for async I/O but is also a massive security disaster in the Linux kernel. As long as Redox is able to show a secure interface for async I/O the better. Likely part of their long term goals for the OS.
> While it has substantially improved over the years, IPC is still quite slow on Redox, and this is important to optimize as ring buffers can only offset this overhead to a certain extent. This has been a focus of our work to improve system performance.
I quite like this targeted and thoughtful approach for a wholistic improvement starting with ring buffers in redox. They need to compare the async executor benchmark results with Linux and continue from there for improvements.
> The optimization made here is tha […]