Re: Asynchronous and "direct" IO support for PostgreSQL.

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>, David Rowley <dgrowleyml@gmail.com>, Melanie Plageman <melanieplageman@gmail.com>
Date: 2021-09-23T06:28:00Z
Lists: pgsql-hackers
On Wed, Sep 1, 2021 at 5:57 PM Andres Freund <andres@anarazel.de> wrote:
> - lots of progress on posix AIO backend (Thomas)

A quick note on this piece:  Though it's still a work in progress with
a few things that need to be improved, I've tested this on a whole lot
of different OSes now.  I originally tried to use realtime signals
(big mistake), but after a couple of reworks I think it's starting to
look plausible and quite portable.  Of the ~10 or so OSes we support
and test in the build farm, ~8 of them have this API, and of those I
have only one unknown: HPUX (I have no access and I am beginning to
suspect it is an ex-parrot), and one mysteriously-doesn't-work: NetBSD
(I'd be grateful for any clues from NetBSD gurus and happy to provide
build/test instructions if anyone would like to take a look).



Commits

  1. aio: Add README.md explaining higher level design

  2. bufmgr: Use AIO in StartReadBuffers()

  3. bufmgr: Implement AIO read support

  4. aio: Implement support for reads in smgr/md/fd

  5. aio: Add io_method=io_uring

  6. aio: Add io_method=worker

  7. aio: Infrastructure for io_method=worker

  8. aio: Add core asynchronous I/O infrastructure