A programmer-friendly I/O abstraction over io_uring and kqueue

by simonz05on 11/23/2022, 4:16 PMwith 33 comments

by dborehamon 11/23/2022, 8:18 PM

"The good news is that Windows also has a completion based system similar to io_uring but without batching, called IOCP"

fwiw IOCP in NT predates the similar mechanisms in Linux by at least a decade (and the VMS QIO scheme upon which it was in turn based is even older). As I understand it the reason Unix(1) (and then Linux) did not have efficient network I/O kernel interfaces until relatively recently was due to fear of patent litigation from MS.

(1) except for AIX, possibly due to IBM being less concerned about MS patents in this area.

by eatonphilon 11/23/2022, 5:27 PM

Hey folks! Phil from TigerBeetle here. Happy to answer questions or pull in King when I cannot. :)

by valzamon 11/24/2022, 8:08 AM

I just watched your talk at the CMU database talks. Just wanted to say I really appreciate reading/hearing about your approach! TB is a super interesting system, I hope I get to properly use it someday.

by ghowardon 11/24/2022, 5:56 AM

Funny. I've implemented something like this as well, but over `poll()`, and I made it handle child processes too.

I could probably change it to use io_uring and kqueue on those platforms, but I wanted to make a POSIX-compatible version first.