Hope security issues with it are solved and usage becomes mostly transparent through userspace libs, it looks like a high performance strategy for our current computing hardware.
Hope security issues with it are solved and usage becomes mostly transparent through userspace libs, it looks like a high performance strategy for our current computing hardware.
Genuinely would be fascinated to understand what that means
The reason is that with faster CPU cores, more cores sharing the memory, bigger CPU core states and relatively slower memory in comparison with the CPU cores, the time wasted by a context switch has become relatively greater in comparison with the time used by a CPU core to do useful work.
So hopefully, implementing some I/O task using io_uring should require less system calls than when using kqueue or epoll. According to the io_uring man page, this should be true.
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-...
io_uring is not even limited to IO
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/ioringap...
https://windows-internals.com/i-o-rings-when-one-i-o-operati...
https://windows-internals.com/ioring-vs-io_uring-a-compariso...
https://www.cs.fsu.edu/~zwang/files/cop4610/Fall2016/windows...
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.
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.
Learning from the past can indeed lead to better designs.
> Hope security issues with it are solved
So, if I understand that correctly, it also introduced new problems? If so, do we know those new issues are solvable without inventing yet another API?
If not, is it really better or just having a different set of issues?
It's just your typical multithreading woes (in an unsafe language). One presumes that these problems will be ironed out eventually. Unfortunately it seems as though various hardened distros turn it off for this reason (source was a HN comment I read a while back).