5 ms·
I haven't looked into io_uring except superficially, but Windows implemented Registered I/O in Windows 8 circa 2011. this is the basically the same programming
by muststopmyths 2y ago
I haven't looked into io_uring except superficially, but Windows implemented Registered I/O in Windows 8 circa 2011. this is the basically the same programming paradigm used in io_uring, except it is sockets-only.
Talk here [1] speaks to the modern reality of 14 years ago :-).
Since kqueue seems very similar to IOCP in paradigm, I guess some of the overheads are similar and hence a ring-buffer-based I/O system would be more performant.
It's worth noting that NVME storage also seems to use a similar I/O pattern as RIO, so I assume we're "closer to the hardware" in this way.
1. https://learn.microsoft.com/en-us/shows/build-build2011/sac-593t https://learn.microsoft.com/en-us/shows/build-build2011/sac-...
- JackSlateur 2y agoio_uring is not limited to networking/sockets io_uring is not even limited to IO
- muststopmyths 2y agoI was talking about RIO
- JackSlateur 2y agoAnd I was talking about the modern reality enabled by iouring. Not really 14yo stuff, to be honest.
- p_ing 2y agoMicrosoft implemented I/O rings in an update to Windows 10 with some differences and it is largely a copy-and-paste of io_uring. It's important to note that the NT kernel was built to leverage async I/O throughout. It was part of the original design documents and not an after-thought. https://learn.microsoft.com/en-us/windows/win32/api/ioringapi/ https://learn.microsoft.com/en-us/windows/win32/api/ioringap... https://windows-internals.com/i-o-rings-when-one-i-o-operation-is-not-enough/ https://windows-internals.com/i-o-rings-when-one-i-o-operati... https://windows-internals.com/ioring-vs-io_uring-a-comparison-of-windows-and-linux-implementations/ https://windows-internals.com/ioring-vs-io_uring-a-compariso... https://www.cs.fsu.edu/~zwang/files/cop4610/Fall2016/windows.pdf https://www.cs.fsu.edu/~zwang/files/cop4610/Fall2016/windows...
- muststopmyths 2y agoWinsock Registered I/O or RIO predates io_uring and you could make the argument that io_uring "is largely a copy-paste of RIO" if you wanted to be childish. The truth is that they both use a obvious pattern of high-performance data transfer that's been around a long time. As I said, NVME devices have been doing that for a while and it's a common paradigm in any DMA-based transfer. io_uring seems more expansive and hence useful compared to the limited scope of RIO or even the NtIoRing stuff.
- p_ing 2y ago> io_uring "is largely a copy-paste of RIO" if you wanted to be childish. This was unnecessary. I'm not denigrating I/O Rings or io_uring. The NT kernel is more advanced than the Linux/BSD/macOS kernels in certain ways. There should be a back-and-forth copying of the good ideas/implementations.
- muststopmyths 2y agoI misunderstood. apologies.