Adding Linux ASYNC I/O to libev

Marc Lehmann schmorp at schmorp.de
Thu Mar 10 10:45:47 CET 2011


On Thu, Mar 10, 2011 at 10:02:28AM +0300, Konstantin Osipov <kostja.osipov at gmail.com> wrote:
> AFAIU there is now a POSIX implementation in the kernel:
> http://www.kernel.org/doc/man-pages/online/pages/man7/aio.7.html

Well, that page says it's nota posix implementation - but that's not really
relevant.

What's relevant is that that implementation is the one with all the
limitations - what's needed is evidence that these limitations are no longer
in place.

It also still requires signals or polling (a problem common to the
posix model, too), both of which are very slow. An alternative would be
signalfd, but due to it's bad design this lead to so many problems that
libev no longer does it by default.

> That I can't say for sure, but a mere switch to laio on Linux in
> MySQL/InnoDB 5.5 gave a measurable increase in performance.

A switch from synchronous I/O...?

> Asynchronous IO was used in MySQL before, but not on Linux, so
> it's hard to say whether the performance improvement came from the
> switch per se or from laio.

Yeah, it might be even faster with libeio and cpu pinning, who knows.

Sorry to sound so negative, but there are a lot of good arguments against
it, and no evidence in favour of it.

-- 
                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at schmorp.de
      -=====/_/_//_/\_,_/ /_/\_\



More information about the libev mailing list