Remove header lock BufferGetLSNAtomic() on architectures with 64 bit atomic operations
Andreas Karlsson <andreas@proxel.se>
From: Andreas Karlsson <andreas@proxel.se>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2025-11-23T23:10:03Z
Lists: pgsql-hackers
Attachments
Hi, Andres pointed out this possible optimization on Discord so I hacked up a quick patch which avoids taking a lock when reading the LSN from a page on architectures where we can be sure to not get a torn value. It is always nice to remove a lock from a reasonably hot code path. I thought about using our functions for atomics but did not do so since I did not want to introduce any extra overhead on platforms which do not support 64-bit atomic operations. I decided to just remove the struct to make the code simpler and more consistent but I can also see an argument for keeping it to get some degree of type safety. I have not properly benchmarked it yet but plan to do so when I am back from my vacation. I have also included a cleanup patch where I change a macro into an inline function which I think improves code readability. Feel free to ignore that one if you want. -- Andreas Percona