From 0ffa593e01e9a9092c55ec9a1f51632b235dabb0 Mon Sep 17 00:00:00 2001 From: Dmitrii Dolgov <9erthalion6@gmail.com> Date: Thu, 11 Jun 2026 22:03:07 +0200 Subject: [PATCH v3 1/3] Add USDT for nbtree page splits and suffix truncation Add new USDT for nbtree: * nbtree__page__split with a single argument BlockNumber to trace page splits, which is usefull for understanding B-Tree performance. * nbtree__page__truncate with a single integer argument representing number of truncated columns, which tells ups truncation effectiveness. --- src/backend/access/nbtree/nbtinsert.c | 3 +++ src/backend/access/nbtree/nbtutils.c | 2 ++ src/backend/utils/probes.d | 3 +++ 3 files changed, 8 insertions(+) diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index d5d964301c1..bc72c8bdc9e 100644 --- a/src/backend/access/nbtree/nbtinsert.c +++ b/src/backend/access/nbtree/nbtinsert.c @@ -24,6 +24,7 @@ #include "common/pg_prng.h" #include "lib/qunique.h" #include "miscadmin.h" +#include "pg_trace.h" #include "storage/lmgr.h" #include "storage/predicate.h" #include "utils/injection_point.h" @@ -2105,6 +2106,8 @@ _bt_split(Relation rel, Relation heaprel, BTScanInsert itup_key, Buffer buf, pfree(lefthighkey); /* split's done */ + TRACE_POSTGRESQL_NBTREE_PAGE_SPLIT(origpagenumber); + return rbuf; } diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c index 014faa1622f..e384354acee 100644 --- a/src/backend/access/nbtree/nbtutils.c +++ b/src/backend/access/nbtree/nbtutils.c @@ -24,6 +24,7 @@ #include "common/int.h" #include "lib/qunique.h" #include "miscadmin.h" +#include "pg_trace.h" #include "storage/lwlock.h" #include "storage/subsystems.h" #include "utils/datum.h" @@ -737,6 +738,7 @@ _bt_truncate(Relation rel, IndexTuple lastleft, IndexTuple firstright, if (keepnatts <= nkeyatts) { BTreeTupleSetNAtts(pivot, keepnatts, false); + TRACE_POSTGRESQL_NBTREE_PAGE_TRUNCATE(nkeyatts - keepnatts); return pivot; } diff --git a/src/backend/utils/probes.d b/src/backend/utils/probes.d index f70577b38f2..4b841e3a11b 100644 --- a/src/backend/utils/probes.d +++ b/src/backend/utils/probes.d @@ -97,4 +97,7 @@ provider postgresql { probe wal__switch(); probe wal__buffer__write__dirty__start(); probe wal__buffer__write__dirty__done(); + + probe nbtree__page__split(BlockNumber); + probe nbtree__page__truncate(int); }; base-commit: 91b1872ff2de16cd353598edbc650a185e649226 -- 2.55.0