diff options
author | Robert Haas | 2017-04-07 17:41:47 +0000 |
---|---|---|
committer | Robert Haas | 2017-04-07 17:41:47 +0000 |
commit | d4116a771925379c33cf4c6634ca620ed08b551d (patch) | |
tree | 27f53d0c2833c66a78809bdb2db57c23d20cb0b9 | |
parent | dbb2a931478a397a2b655eb77e8be8c1ca136f63 (diff) |
Add ProcArrayGroupUpdate wait event.
Discussion: http://postgr.es/m/CA+TgmobgWHcXDcChX2+BqJDk2dkPVF85ZrJFhUyHHQmw8diTpA@mail.gmail.com
-rw-r--r-- | doc/src/sgml/monitoring.sgml | 5 | ||||
-rw-r--r-- | src/backend/postmaster/pgstat.c | 3 | ||||
-rw-r--r-- | src/backend/storage/ipc/procarray.c | 3 | ||||
-rw-r--r-- | src/include/pgstat.h | 1 |
4 files changed, 11 insertions, 1 deletions
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index 9856968997..b16325d390 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -1232,7 +1232,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry>Waiting in an extension.</entry> </row> <row> - <entry morerows="11"><literal>IPC</></entry> + <entry morerows="12"><literal>IPC</></entry> <entry><literal>BgWorkerShutdown</></entry> <entry>Waiting for background worker to shut down.</entry> </row> @@ -1273,6 +1273,9 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry>Waiting for the leader to populate the TidBitmap.</entry> </row> <row> + <entry><literal>ProcArrayGroupUpdate</></entry> + <entry>Waiting for group leader to clear transaction id at transaction end.</entry> + <row> <entry><literal>SafeSnapshot</></entry> <entry>Waiting for a snapshot for a <literal>READ ONLY DEFERRABLE</> transaction.</entry> </row> diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 56a8bf2d17..3fb57f060c 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -3560,6 +3560,9 @@ pgstat_get_wait_ipc(WaitEventIPC w) case WAIT_EVENT_PARALLEL_BITMAP_SCAN: event_name = "ParallelBitmapScan"; break; + case WAIT_EVENT_PROCARRAY_GROUP_UPDATE: + event_name = "ProcArrayGroupUpdate"; + break; case WAIT_EVENT_SAFE_SNAPSHOT: event_name = "SafeSnapshot"; break; diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index fb39bdc2f5..ebf6a92923 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -53,6 +53,7 @@ #include "access/xlog.h" #include "catalog/catalog.h" #include "miscadmin.h" +#include "pgstat.h" #include "storage/proc.h" #include "storage/procarray.h" #include "storage/spin.h" @@ -513,6 +514,7 @@ ProcArrayGroupClearXid(PGPROC *proc, TransactionId latestXid) int extraWaits = 0; /* Sleep until the leader clears our XID. */ + pgstat_report_wait_start(WAIT_EVENT_PROCARRAY_GROUP_UPDATE); for (;;) { /* acts as a read barrier */ @@ -521,6 +523,7 @@ ProcArrayGroupClearXid(PGPROC *proc, TransactionId latestXid) break; extraWaits++; } + pgstat_report_wait_end(); Assert(pg_atomic_read_u32(&proc->procArrayGroupNext) == INVALID_PGPROCNO); diff --git a/src/include/pgstat.h b/src/include/pgstat.h index e29397f25b..5e029c0f4e 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -808,6 +808,7 @@ typedef enum WAIT_EVENT_MQ_SEND, WAIT_EVENT_PARALLEL_FINISH, WAIT_EVENT_PARALLEL_BITMAP_SCAN, + WAIT_EVENT_PROCARRAY_GROUP_UPDATE, WAIT_EVENT_SAFE_SNAPSHOT, WAIT_EVENT_SYNC_REP, WAIT_EVENT_LOGICAL_SYNC_DATA, |