diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index a84042a4ea..58b360d225 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -3765,6 +3765,9 @@ pgstat_get_wait_ipc(WaitEventIPC w) case WAIT_EVENT_EXECUTE_GATHER: event_name = "ExecuteGather"; break; + case WAIT_EVENT_GLOBAL_BARRIER: + event_name = "GlobalBarrier"; + break; case WAIT_EVENT_HASH_BATCH_ALLOCATING: event_name = "Hash/Batch/Allocating"; break; diff --git a/src/backend/storage/ipc/procsignal.c b/src/backend/storage/ipc/procsignal.c index 4e3e4a4893..9aed52df4a 100644 --- a/src/backend/storage/ipc/procsignal.c +++ b/src/backend/storage/ipc/procsignal.c @@ -21,6 +21,7 @@ #include "access/twophase.h" #include "commands/async.h" #include "miscadmin.h" +#include "pgstat.h" #include "replication/walsender.h" #include "storage/latch.h" #include "storage/ipc.h" @@ -368,6 +369,7 @@ EmitGlobalBarrier(GlobalBarrierKind kind) void WaitForGlobalBarrier(uint64 generation) { + pgstat_report_wait_start(WAIT_EVENT_GLOBAL_BARRIER); for (int i = 0; i < (MaxBackends + max_prepared_xacts); i++) { PGPROC *proc = &ProcGlobal->allProcs[i]; @@ -389,6 +391,7 @@ WaitForGlobalBarrier(uint64 generation) oldval = pg_atomic_read_u64(&proc->barrierGen); } } + pgstat_report_wait_end(); } /* diff --git a/src/include/pgstat.h b/src/include/pgstat.h index 2b656a8168..0d35b19420 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -827,6 +827,7 @@ typedef enum WAIT_EVENT_CHECKPOINT_DONE, WAIT_EVENT_CHECKPOINT_START, WAIT_EVENT_EXECUTE_GATHER, + WAIT_EVENT_GLOBAL_BARRIER, WAIT_EVENT_HASH_BATCH_ALLOCATING, WAIT_EVENT_HASH_BATCH_ELECTING, WAIT_EVENT_HASH_BATCH_LOADING,