pgsql: Fix SLRU bank selection code - Mailing list pgsql-committers

From Álvaro Herrera
Subject pgsql: Fix SLRU bank selection code
Date
Msg-id E1tVmG9-000ccX-TM@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix SLRU bank selection code

The originally submitted code (using bit masking) was correct when the
number of slots was restricted to be a power of two -- but that
limitation was removed during development that led to commit
53c2a97a9266, which made the bank selection code incorrect.  This led to
always using a smaller number of banks than available.  Change said code
to use integer modulo instead, which works correctly with an arbitrary
number of banks.

It's likely that we could improve on this to avoid runtime use of
integer division.  But with this change we're, at least, not wasting
memory on unused banks, and more banks mean less contention, which is
likely to have a much higher performance impact than a single
instruction's latency.

Author: Yura Sokolov <y.sokolov@postgrespro.ru>
Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru>
Discussion: https://postgr.es/m/9444dc46-ca47-43ed-9058-89c456316306@postgrespro.ru

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/69ab44651422c49a6256d1b6cca6c20b5060ad92

Modified Files
--------------
src/backend/access/transam/slru.c | 6 +++---
src/include/access/slru.h         | 9 +++------
2 files changed, 6 insertions(+), 9 deletions(-)


pgsql-committers by date:

Previous
From: Thomas Munro
Date:
Subject: pgsql: Fix off_t overflow in pg_basebackup on Windows.
Next
From: Álvaro Herrera
Date:
Subject: pgsql: Fix SLRU bank selection code