Re:Efficient IO in Linux with io_uring [pdf]
by tripwanger on Sunday October 16, 2022 @07:41AM
(#33222857)
I think that highlights one of the issues with Linux being essentially just another clone of Unix, and thus being constrained by its limitations - both technically and in mindset of its developers.
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.
Re:Efficient IO in Linux with io_uring [pdf]
by speed_spread on Sunday October 16, 2022 @09:59AM
(#33223661)
Windows NT was not a fresh new design but a direct evolution of VMS, which had it's own history independent of Unix. That it steered clear of Unix's shortcomings is a result of a design process that's much less napkin-based and more "engineered" for better and worse.
Re:Efficient IO in Linux with io_uring [pdf]
by muststopmyths on Sunday October 16, 2022 @08:54AM
(#33223234)
Windows already had a uring like API for sockets called registered I/O. It was specifically designed to overcome IOCP limitations
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
Re:Efficient IO in Linux with io_uring [pdf]
by benlwalker on Sunday October 16, 2022 @09:50AM
(#33223602)
Windows did already have async ("overlapped") IO, and a completion aggregator (IOCP) kind of like io_uring. What Windows didn't have, and the reason they're now adding their own IORing, is the ability to submit batches of operations in a single system call. Batching operations to reduce system calls on the submission side is one of the most important features of io_uring.
The Windows IORing is only storage today, but hopefully becomes a generic system for making batched, async system calls just like on Linux.
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?