v6-0003-NOCOMMIT-Instrumentation-for-time-spent-in-_brin_.patch
application/octet-stream
Filename: v6-0003-NOCOMMIT-Instrumentation-for-time-spent-in-_brin_.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch v6-0003
Subject: NOCOMMIT: Instrumentation for time spent in _brin_end_parallel
| File | + | − |
|---|---|---|
| src/backend/access/brin/brin.c | 17 | 0 |
From 97707510215456cf8db0f720b1c9a96e6f4dc073 Mon Sep 17 00:00:00 2001
From: Matthias van de Meent <boekewurm+postgres@gmail.com>
Date: Wed, 29 Nov 2023 20:35:22 +0100
Subject: [PATCH v6 3/3] NOCOMMIT: Instrumentation for time spent in
_brin_end_parallel
---
src/backend/access/brin/brin.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/src/backend/access/brin/brin.c b/src/backend/access/brin/brin.c
index e7ec7c7b53..119c23cb09 100644
--- a/src/backend/access/brin/brin.c
+++ b/src/backend/access/brin/brin.c
@@ -2482,6 +2482,9 @@ _brin_end_parallel(BrinLeader *brinleader, BrinBuildState *state)
oldCxt;
BrinTuple *prevbtup = NULL;
Size prevtuplen;
+ instr_time time_spent;
+
+ INSTR_TIME_SET_ZERO(time_spent);
/* Shutdown worker processes */
WaitForParallelWorkersToFinish(brinleader->pcxt);
@@ -2523,6 +2526,11 @@ _brin_end_parallel(BrinLeader *brinleader, BrinBuildState *state)
*/
while ((btup = tuplesort_getbrintuple(spool->sortstate, &tuplen, true)) != NULL)
{
+ instr_time opr_start;
+ instr_time opr_end;
+
+ INSTR_TIME_SET_CURRENT(opr_start);
+
/* Ranges should be multiples of pages_per_range for the index. */
Assert(btup->bt_blkno % brinshared->pagesPerRange == 0);
@@ -2579,6 +2587,8 @@ _brin_end_parallel(BrinLeader *brinleader, BrinBuildState *state)
}
union_tuples(state->bs_bdesc, memtuple, btup);
+ INSTR_TIME_SET_CURRENT(opr_end);
+ INSTR_TIME_ACCUM_DIFF(time_spent, opr_end, opr_start);
continue;
}
else
@@ -2602,8 +2612,11 @@ _brin_end_parallel(BrinLeader *brinleader, BrinBuildState *state)
len = prevtuplen;
}
+ INSTR_TIME_SET_CURRENT(opr_end);
+ INSTR_TIME_ACCUM_DIFF(time_spent, opr_end, opr_start);
brin_doinsert(state->bs_irel, state->bs_pagesPerRange, state->bs_rmAccess,
&state->bs_currentInsertBuf, tmp->bt_blkno, tmp, len);
+ INSTR_TIME_SET_CURRENT(opr_start);
/*
* Reset the per-output-range context. This frees all the memory
@@ -2627,6 +2640,9 @@ _brin_end_parallel(BrinLeader *brinleader, BrinBuildState *state)
/* continue to insert empty pages before thisblock */
}
+ INSTR_TIME_SET_CURRENT(opr_end);
+ INSTR_TIME_ACCUM_DIFF(time_spent, opr_end, opr_start);
+
/* Fill empty ranges for all ranges missing in the tuplesort. */
prevblkno = (prevblkno == InvalidBlockNumber) ? 0 : prevblkno;
while (prevblkno + state->bs_pagesPerRange < btup->bt_blkno)
@@ -2698,6 +2714,7 @@ _brin_end_parallel(BrinLeader *brinleader, BrinBuildState *state)
UnregisterSnapshot(brinleader->snapshot);
DestroyParallelContext(brinleader->pcxt);
ExitParallelMode();
+ elog(LOG, "Spent %ld nanos on non-IO tasks", INSTR_TIME_GET_NANOSEC(time_spent));
}
/*
--
2.40.1