pg.ddx.io pgsql-committers@postgresql.org mailing list archivehelp / color / mirror / Atom feed
pgsql: Fix SLRU bank selection code 2+ messages / 1 participants [nested] [flat]
* pgsql: Fix SLRU bank selection code @ 2025-01-09 06:43 Álvaro Herrera <alvherre@alvh.no-ip.org> 0 siblings, 0 replies; 2+ messages in thread From: Álvaro Herrera @ 2025-01-09 06:43 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org 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(-) ^ permalink raw reply [nested|flat] 2+ messages in thread
* pgsql: Fix SLRU bank selection code @ 2025-01-09 06:45 Álvaro Herrera <alvherre@alvh.no-ip.org> 0 siblings, 0 replies; 2+ messages in thread From: Álvaro Herrera @ 2025-01-09 06:45 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org 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 ------ REL_17_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/ffd9b813465843c5eda04229a09d2167ed4a4a71 Modified Files -------------- src/backend/access/transam/slru.c | 6 +++--- src/include/access/slru.h | 9 +++------ 2 files changed, 6 insertions(+), 9 deletions(-) ^ permalink raw reply [nested|flat] 2+ messages in thread
end of thread, other threads:[~2025-01-09 06:45 UTC | newest] Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2025-01-09 06:43 pgsql: Fix SLRU bank selection code Álvaro Herrera <alvherre@alvh.no-ip.org> 2025-01-09 06:45 pgsql: Fix SLRU bank selection code Álvaro Herrera <alvherre@alvh.no-ip.org>
This inbox is served by DDX for PostgreSQL; see mirroring instructions for how to clone and mirror all data and code used for this inbox