Re: Use PGAlignedBlock instead of "char buf[BLCKSZ]" in more places

From: Andres Freund <andres(at)anarazel(dot)de>
To: Peter Eisentraut <peter(at)eisentraut(dot)org>
Cc: Michael Paquier <michael(at)paquier(dot)xyz>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Use PGAlignedBlock instead of "char buf[BLCKSZ]" in more places
Date: 2023-12-04 17:47:24
Message-ID: 20231204174724.3va4cqu3dmrbnwsj@awork3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2023-12-04 15:53:44 +0100, Peter Eisentraut wrote:
> On 04.12.23 06:46, Michael Paquier wrote:
> > On Mon, Dec 04, 2023 at 06:59:13AM +0530, Bharath Rupireddy wrote:
> > > The commit 44cac934 replaced "char buf[BLCKSZ]" with PGAlignedBlock to
> > > avoid issues on alignment-picky hardware. While it replaced most of the
> > > instances, there are still some more left. How about we use PGAlignedBlock
> > > there too, something like the attached patch? A note [2] in the commit
> > > 44cac934 says that ensuring proper alignment makes kernel data transfers
> > > fasters and the left-over "char buf[BLCKSZ]" either do read() or write()
> > > system calls, so it might be worth to align them with PGAlignedBlock.
> > >
> > > Thoughts?
> >
> > The buffers used to write the lock file and the TLI history file are
> > not page buffers, and this could make code readers think that these
> > are pages.
>
> The type is called "aligned block", not "aligned buffer" or "aligned page",
> so I don't think it's incorrect to try to use it.

Block is a type defined in bufmgr.h...

> So I am honestly not sure if there's a point in changing
> > them because the current code is not incorrect, isn't it? It looks
> > like 2042b3428d39 for the TLI history file and 52948169bcdd for the
> > lock file began using BLCKSZ because that was just a handy thing to
> > do, and because we know they would never get beyond that.
>
> Yeah, it's not clear why these need to be block-sized. We shouldn't
> perpetuate this without more clarity about this.

If we change something, we should consider making buffers like these aligned
to page sizes, rather than just MAXALIGNED.

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Nathan Bossart 2023-12-04 17:58:11 Re: [PATCH] pg_convert improvement
Previous Message Tristan Partin 2023-12-04 17:20:56 Re: Clean up some signal usage mainly related to Windows