Re: Direct I/O - Mailing list pgsql-hackers

From Thomas Munro
Subject Re: Direct I/O
Date
Msg-id CA+hUKGKxqvo5FBsb7SUTT5EA2PFmGhVWEvA-RYY_zwqgeQ63wg@mail.gmail.com
Whole thread Raw
In response to Re: Direct I/O  (Justin Pryzby <pryzby@telsasoft.com>)
Responses Re: Direct I/O
List pgsql-hackers
On Wed, Nov 2, 2022 at 2:33 AM Justin Pryzby <pryzby@telsasoft.com> wrote:
> On Tue, Nov 01, 2022 at 08:36:18PM +1300, Thomas Munro wrote:
> >   io_data_direct = whether to use O_DIRECT for main data files
> >   io_wal_direct = ... for WAL
> >   io_wal_init_direct = ... for WAL-file initialisation
>
> You added 3 booleans, but I wonder if it's better to add a string GUC
> which is parsed for comma separated strings.  (By "better", I mean
> reducing the number of new GUCs - which is less important for developer
> GUCs anyway.)

Interesting idea.  So "direct_io = data, wal, wal_init", or maybe that
should be spelled io_direct.  ("Direct I/O" is a common term of art,
but we also have some more io_XXX GUCs in later patches, so it's hard
to choose...)

> DIO is slower, but not so much that it can't run under CI.  I suggest to
> add an 099 commit to enable the feature during development.

Good idea, will do.

> Note that this fails under linux with fsanitize=align:
> ../src/backend/storage/file/buffile.c:117:17: runtime error: member access within misaligned address 0x561a4a8e40f8
fortype 'struct BufFile', which requires 4096 byte alignment
 

Oh, so BufFile is palloc'd and contains one of these.  BufFile is not
even using direct I/O, but by these rules it would need to be
palloc_io_align'd.  I will think about what to do about that...



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: Check return value of pclose() correctly
Next
From: Peter Eisentraut
Date:
Subject: Re: psql: Add command to use extended query protocol