I’m recently digging into linux io model, and I frequently hear that like windows IOCP, linux has its own aio model implementation: Glibc aio and kernel aio.
Question:
(1) when people say “linux native aio”, which model is indicated?
(2) I hear 2 different terms, “linux aio” and “linux native aio”. Are they the same thing, or indicating different implementations?
Advertisement
Answer
Linux native AIO is kernel AIO. The interfaces are io_setup(2), io_submit(2), io_getevents(2),
and a handful of other calls.
When people are talking about “linux AIO”, they probably mean “Linux native AIO” – though who knows. This is the Internet, after all.
Posix AIO is something altogether different. It’s implemented with threading in user-space. See the top answer to Difference between POSIX AIO and libaio on Linux? for a good, well vetted description of the differences between Posix AIO and Linux kernel AIO.