Remove header lock BufferGetLSNAtomic() on architectures with 64 bit atomic operations

Поиск
Список
Период
Сортировка
От Andreas Karlsson
Тема Remove header lock BufferGetLSNAtomic() on architectures with 64 bit atomic operations
Дата
Msg-id b6610c3b-3f59-465a-bdbb-8e9259f0abc4@proxel.se
обсуждение исходный текст
Список pgsql-hackers
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

Вложения

В списке pgsql-hackers по дате отправления: