SLRU statistics
Tomas Vondra <tomas.vondra@2ndquadrant.com>
From: Tomas Vondra <tomas.vondra@2ndquadrant.com>
To: pgsql-hackers@postgresql.org
Date: 2020-01-19T14:37:07Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix async.c to not register any SLRU stats counts in the postmaster.
- 7fd89f4d7a51 13.0 landed
-
Use proper GetDatum function in pg_stat_get_slru().
- 043e3e040160 13.0 landed
-
Initialize SLRU stats entries to zero.
- f3d23d83ef9a 13.0 landed
-
Remove pg_xact from pg_stat_reset_slru docs
- e685ca63ca4f 13.0 landed
-
Remove pg_xact entry from SLRU stats
- 2e08d314ed07 13.0 landed
-
Track SLRU page hits in SimpleLruReadPage_ReadOnly
- 2b88fdde30d8 13.0 landed
-
Fix typo in SLRU stats documentation
- 2c220ca46f3f 13.0 landed
-
Collect statistics about SLRU caches
- 28cac71bd368 13.0 landed
-
Simplify and rename some GUC variables, per various recent discussions:
- 48f7e6439568 8.3.0 cited
Attachments
- stats-slru-v1.patch (text/plain) patch v1
Hi,
One of the stats I occasionally wanted to know are stats for the SLRU
stats (we have couple of those - clog, subtrans, ...). So here is a WIP
version of a patch adding that.
The implementation is fairly simple - the slru code updates counters in
local memory, and then sends them to the collector at the end of the
transaction (similarly to table/func stats). The collector stores it
similarly to global stats. And the collected stats are accessible
through pg_stat_slru.
The main issue is that we have multiple SLRU caches, and it seems handy
to have separate stats for each. OTOH the number of SLRU stats is not
fixed, so e.g. extensions might define their own SLRU caches. But
handing dynamic number of SLRU caches seems a bit hard (we'd need to
assign some sort of unique IDs etc.) so what I did was define a fixed
number of SLRU types
typedef enum SlruType
{
SLRU_CLOG,
SLRU_COMMIT_TS,
SLRU_MULTIXACT_OFFSET,
SLRU_MULTIXACT_MEMBER,
SLRU_SUBTRANS,
SLRU_ASYNC,
SLRU_OLDSERXID,
SLRU_OTHER
} SlruType;
with one group of counters for each group. The last type (SLRU_OTHER) is
used to store stats for all SLRUs that are not predefined. It wouldn't
be that difficult to store dynamic number of SLRUs, but I'm not sure how
to solve issues with identifying SLRUs etc. And there are probably very
few extensions adding custom SLRU anyway.
The one thing missing from the patch is a way to reset the SLRU stats,
similarly to how we can reset bgwriter stats.
regards
--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services