I’ve never managed to do a comparison of io_uring vs IOCP but I guess there was some benefit here, I left that job before io_uring was mature.
Would anyone be willing to share a comparison of the two systems?
Whereas NT was a fresh new design, by seasoned operating systems designers and implementers, who had seen the shortcomings of the Unix model (and others) and not only knew what to do differently to improve on these, but actually wanted to and were permitted to as well.
Edit: you can read about it by googling for the original RIO presentation, but the gist is that at very high packet rates the completion signaling and locking/unlocking buffers for I/O cause a lot of overhead and RIO mitigates that by preregistering buffers
The Windows IORing is only storage today, but hopefully becomes a generic system for making batched, async system calls just like on Linux.
Actually, io_uring has received around 500 commits just in 2022. Here's a list of interesting feature additions(this year),
- https://www.phoronix.com/news/Linux-LPC2022-io_uring_spawn
- https://www.phoronix.com/news/Linux-520-XFS-uring-Async-Buff
- https://www.phoronix.com/news/Linux-5.20-IO_uring-ZC-Send
- https://www.phoronix.com/news/Linux-5.19-IO_uring
io_uring like API was also adopted by Windows recently. Lots of fun.