Re: Direct I/O

From: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Andres Freund <andres(at)anarazel(dot)de>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Dagfinn Ilmari Mannsåker <ilmari(at)ilmari(dot)org>, Christoph Berg <myon(at)debian(dot)org>, mikael(dot)kjellstrom(at)gmail(dot)com, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Direct I/O
Date: 2023-04-14 23:16:57
Message-ID: CA+hUKGLVXA9GaG-DPtjmOj0+YVc0=ESVN5E3ySaW8qFWqv9QXw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Apr 15, 2023 at 7:38 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Andres Freund <andres(at)anarazel(dot)de> writes:
> > On 2023-04-14 15:21:18 -0400, Tom Lane wrote:
> >> +1 for that, though. (Also, the fact that these animals aren't
> >> actually failing suggests that 004_io_direct.pl needs expansion.)
>
> > It's skipped, due to lack of O_DIRECT:
> > [20:50:22] t/004_io_direct.pl .............. skipped: no O_DIRECT
>
> Hmm, I'd say that might be just luck. Whether the compiler honors weird
> alignment of locals seems independent of whether the OS has O_DIRECT.
>
> > So perhaps we don't even need a configure test, just a bit of ifdef'ery? It's
> > a bit annoying structurally, because the PG*Aligned structs are defined in
> > c.h, but the different ways of spelling O_DIRECT are dealt with in fd.h.
>
> > I wonder if we should try to move those structs to fd.h as well...
>
> I doubt they belong in c.h, so that could be plausible; except
> I'm not convinced that testing O_DIRECT is sufficient.

As far as I can tell, the failure to honour large alignment attributes
even though the compiler passes our configure check that you can do
that was considered to be approximately a bug[1] or at least a thing
to be improved in fairly old GCC times but the fix wasn't back-patched
that far. Unfortunately the projects that were allergic to the GPL3
change but wanted to ship a compiler (or some motivation related to
that) got stuck on 4.2 for a while before they flipped to Clang (as
OpenBSD has now done). It seems hard to get excited about doing
anything about that on our side, and those systems are also spewing
other warnings. But if we're going to do it, it looks like the right
place would indeed be a new compiler check that the attribute exists
*and* generates no warnings with alignment > 16, something like that?

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16660

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amin 2023-04-14 23:33:05 Scans are offloaded to SeqScan instead of CustomScan when there are multiple relations in the same query
Previous Message Justin Pryzby 2023-04-14 22:48:19 Re: v16dev: invalid memory alloc request size 8488348128