←back to thread

118 points ashvardanian | 2 comments | | HN request time: 0.439s | source
Show context
User23 ◴[] No.42179195[source]
It's a shame io_uring is proving to be such a disappointment. It's been over two decades now that Linux has been trying to catch up with the NT Kernel's IO Completion Ports and we're still not there.

On the plus side, this submission somehow reminded me about ACE[1], which is where I first came across the Proactor[2]/Reactor distinction. Good times!

[1] https://www.dre.vanderbilt.edu/~schmidt/ACE.html

[2] https://www.dre.vanderbilt.edu/~schmidt/PDF/Proactor.pdf

replies(3): >>42185090 #>>42186336 #>>42194066 #
1. tveita ◴[] No.42194066[source]
For all people say things like "Linux has been trying to catch up with the NT Kernel's IO Completion Ports", is there anywhere that translates to Windows being faster than Linux at disk or networking?

Or is it just a matter of conceptual elegance or programmer convenience?

replies(1): >>42198165 #
2. loeg ◴[] No.42198165[source]
Yes, NT had legitimately better async disk IO with completion ports prior to io_uring. Some things are much worse on Windows (anything to do with file enumeration / directories) but once you've got the file open, NT async IO is high performance. Prior to io_uring, Linux applications could only approximate asynchronous disk IO via a threadpool, and those threadpools could not integrate with fd-based event loops well.

I can't find the comments now, but HN users have written at length about NT IO performance in the past.