Comment by loeg

1 day ago

IOCP is great and was ahead of Linux for decades, but io_uring is also great. It's a different model, not a poor copy.

I think they are a bit different - in the Windows kernel, all IO is asynchronous on the driver level, on Linux, it's not.

io_uring didn't change that, it only got rid of the syscall overhead (which is still present on Windows), so in actuality they are two different technical solutions that affect different levels of the stack.

In practice, Linux I/O is much faster, owing in part to the fact that Windows file I/O requires locking the file, while Linux does not.

  • io_uring makes synchronous syscalls async simply by offloading them to a pool of kernel threads, just like people have done for decades in userspace.

    • It's not the async part, it's the not invoking the function part - io_uring replaces syscalls with producer consumer ring buffers.