Re: strange perf regression with data checksums

From: Tomas Vondra <tomas(at)vondra(dot)me>
To: Peter Geoghegan <pg(at)bowt(dot)ie>
Cc: Aleksander Alekseev <aleksander(at)timescale(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: strange perf regression with data checksums
Date: 2025-05-19 20:17:16
Message-ID: 51332170-5a27-4482-ba13-48d13e5582f2@vondra.me
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 5/19/25 20:44, Peter Geoghegan wrote:
> On Mon, May 19, 2025 at 2:19 PM Peter Geoghegan <pg(at)bowt(dot)ie> wrote:
>> On Mon, May 19, 2025 at 2:01 PM Tomas Vondra <tomas(at)vondra(dot)me> wrote:
>>> The regular index scan however still have this issue, although it's not
>>> as visible as for IOS.
>>
>> We can do somewhat better with plain index scans than my initial v1
>> prototype, without any major difficulties. There's more low-hanging
>> fruit.
>>
>> We could also move the call to BufferGetLSNAtomic (that currently
>> takes place inside _bt_readpage) over to _bt_drop_lock_and_maybe_pin.
>> That way we'd only need to call BufferGetLSNAtomic for those leaf
>> pages that will actually need to have some index tuples returned to
>> the scan (through the btgettuple interface).
>
> Attached is v2, which does things this way. What do you think?
>
> v2 also manages to avoid calling BufferGetLSNAtomic during all bitmap
> index scans. You didn't complain about any regressions in bitmap index
> scans, but I see no reason to take any chances (it's easy to just not
> call BufferGetLSNAtomic there).
>

Same effect as v1 for IOS, with regular index scans I see this:

64 clients: 0.7M tps
96 clients: 1.5M tps

So very similar improvement as for IOS.

regards

--
Tomas Vondra

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2025-05-19 20:22:25 Thread-safe getopt() (was: report on not thread-safe functions)
Previous Message Peter Geoghegan 2025-05-19 19:45:01 Re: strange perf regression with data checksums