| From: | David Rowley <drowley(at)postgresql(dot)org> | 
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org | 
| Subject: | pgsql: Eliminate divide in new fast-path locking code | 
| Date: | 2025-04-26 23:53:59 | 
| Message-ID: | E1u8pLK-001wsp-2X@gemulon.postgresql.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-committers | 
Eliminate divide in new fast-path locking code
c4d5cb71d2 adjusted the fast-path locking code to allow some
configuration of the number of fast-path locking slots via the
max_locks_per_transaction GUC.  In that commit the FAST_PATH_REL_GROUP()
macro used integer division to determine the fast-path locking group slot
to use for the lock.
The divisor in this case is always a power-of-two value.  Here we swap
out the divide by a bitwise-AND, which is a significantly faster
operation to perform.
In passing, adjust the code that's setting FastPathLockGroupsPerBackend
so that it's more clear that the value being set is a power-of-two.
Also, adjust some comments in the area which contained some magic
numbers.  It seems better to justify the 1024 upper limit in the
location where the #define is made instead of where it is used.
Author: David Rowley <drowleyml(at)gmail(dot)com>
Reviewed-by: Tomas Vondra <tomas(at)vondra(dot)me>
Discussion: https://postgr.es/m/CAApHDvodr3bcnpxcs7+k-3cFwYR0tP-BYhyd2PpDhe-bCx9i=g@mail.gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/936457419d797dfaf37191db53d5efb1279eae6d
Modified Files
--------------
src/backend/storage/lmgr/lock.c   |  5 ++++-
src/backend/utils/init/postinit.c | 34 +++++++++++++++-------------------
src/include/storage/proc.h        |  8 ++++++++
3 files changed, 27 insertions(+), 20 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2025-04-27 00:30:52 | pgsql: Don't use double-quotes in #include's of system headers. | 
| Previous Message | Tomas Vondra | 2025-04-26 21:07:46 | Re: pgsql: Add function to get memory context stats for processes |