pgsql: Improve management of SLRU statistics collection.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Improve management of SLRU statistics collection.
Date: 2020-05-13 17:08:42
Message-ID: E1jYus6-0003ek-B1@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Improve management of SLRU statistics collection.

Instead of re-identifying which statistics bucket to use for a given
SLRU on every counter increment, do it once during shmem initialization.
This saves a fair number of cycles, and there's no real cost because
we could not have a bucket assignment that varies over time or across
backends anyway.

Also, get rid of the ill-considered decision to let pgstat.c pry
directly into SLRU's shared state; it's cleaner just to have slru.c
pass the stats bucket number.

In consequence of these changes, there's no longer any need to store
an SLRU's LWLock tranche info in shared memory, so get rid of that,
making this a net reduction in shmem consumption. (That partly
reverts fe702a7b3.)

This is basically code review for 28cac71bd, so I also cleaned up
some comments, removed a dangling extern declaration, fixed some
things that should be static and/or const, etc.

Discussion: https://postgr.es/m/3618.1589313035@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/81ca8686305c4c62d723ab224ad5c414f350a3a0

Modified Files
--------------
src/backend/access/transam/slru.c | 27 +++++------
src/backend/postmaster/pgstat.c | 96 +++++++++++++++++++------------------
src/backend/utils/adt/pgstatfuncs.c | 2 +-
src/include/access/slru.h | 10 ++--
src/include/pgstat.h | 26 ++++------
5 files changed, 76 insertions(+), 85 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Alvaro Herrera 2020-05-13 19:31:57 pgsql: Dial back -Wimplicit-fallthrough to level 3
Previous Message Alvaro Herrera 2020-05-13 16:25:45 pgsql: Adjust walsender usage of xlogreader, simplify APIs