Add wait events for WAL archive and recovery pause.
authorFujii Masao <fujii@postgresql.org>
Tue, 24 Mar 2020 02:12:21 +0000 (11:12 +0900)
committerFujii Masao <fujii@postgresql.org>
Tue, 24 Mar 2020 02:12:21 +0000 (11:12 +0900)
This commit introduces new wait events BackupWaitWalArchive and
RecoveryPause. The former is reported while waiting for the WAL files
required for the backup to be successfully archived. The latter is
reported while waiting for recovery in pause state to be resumed.

Author: Fujii Masao
Reviewed-by: Michael Paquier, Atsushi Torikoshi, Robert Haas
Discussion: https://postgr.es/m/f0651f8c-9c96-9f29-0ff9-80414a15308a@oss.nttdata.com

doc/src/sgml/monitoring.sgml
src/backend/access/transam/xlog.c
src/backend/postmaster/pgstat.c
src/include/pgstat.h

index 2bf540f8dba911cd2cf2b3edbe1459aaaaaf5d73..fd3b6b9f38c417c23a4df946bf8ba932c979ba8d 100644 (file)
@@ -1339,7 +1339,11 @@ 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="36"><literal>IPC</literal></entry>
+         <entry morerows="38"><literal>IPC</literal></entry>
+         <entry><literal>BackupWaitWalArchive</literal></entry>
+         <entry>Waiting for WAL files required for the backup to be successfully archived.</entry>
+        </row>
+        <row>
          <entry><literal>BgWorkerShutdown</literal></entry>
          <entry>Waiting for background worker to shut down.</entry>
         </row>
@@ -1471,6 +1475,10 @@ postgres   27093  0.0  0.0  30096  2752 ?        Ss   11:34   0:00 postgres: ser
          <entry><literal>Promote</literal></entry>
          <entry>Waiting for standby promotion.</entry>
         </row>
+        <row>
+         <entry><literal>RecoveryPause</literal></entry>
+         <entry>Waiting for recovery to be resumed.</entry>
+        </row>
         <row>
          <entry><literal>ReplicationOriginDrop</literal></entry>
          <entry>Waiting for a replication origin to become inactive to be dropped.</entry>
index 793c076da6b1e9da32f0d1b1d22a83cb1f93017d..64860f12f56c62060d2f073939c2cb133ffdb177 100644 (file)
@@ -5946,7 +5946,9 @@ recoveryPausesHere(void)
 
        while (RecoveryIsPaused())
        {
+               pgstat_report_wait_start(WAIT_EVENT_RECOVERY_PAUSE);
                pg_usleep(1000000L);    /* 1000 ms */
+               pgstat_report_wait_end();
                HandleStartupProcInterrupts();
        }
 }
@@ -11146,7 +11148,9 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p)
                                reported_waiting = true;
                        }
 
+                       pgstat_report_wait_start(WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE);
                        pg_usleep(1000000L);
+                       pgstat_report_wait_end();
 
                        if (++waits >= seconds_before_warning)
                        {
index d29c211a765215ae4d5c8e148c6f46f63403010f..5a8c4abe8a2345e33cf4ca830f3f5f20b4f7f6e8 100644 (file)
@@ -3682,6 +3682,9 @@ pgstat_get_wait_ipc(WaitEventIPC w)
 
        switch (w)
        {
+               case WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE:
+                       event_name = "BackupWaitWalArchive";
+                       break;
                case WAIT_EVENT_BGWORKER_SHUTDOWN:
                        event_name = "BgWorkerShutdown";
                        break;
@@ -3781,6 +3784,9 @@ pgstat_get_wait_ipc(WaitEventIPC w)
                case WAIT_EVENT_PROMOTE:
                        event_name = "Promote";
                        break;
+               case WAIT_EVENT_RECOVERY_PAUSE:
+                       event_name = "RecoveryPause";
+                       break;
                case WAIT_EVENT_REPLICATION_ORIGIN_DROP:
                        event_name = "ReplicationOriginDrop";
                        break;
index 851d0a7246cfb3b4dc96f5d7db11adde23e780a4..5d3b4786577a883c5eccab7f653ef91ffd1dd19d 100644 (file)
@@ -798,7 +798,8 @@ typedef enum
  */
 typedef enum
 {
-       WAIT_EVENT_BGWORKER_SHUTDOWN = PG_WAIT_IPC,
+       WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE = PG_WAIT_IPC,
+       WAIT_EVENT_BGWORKER_SHUTDOWN,
        WAIT_EVENT_BGWORKER_STARTUP,
        WAIT_EVENT_BTREE_PAGE,
        WAIT_EVENT_CLOG_GROUP_UPDATE,
@@ -831,6 +832,7 @@ typedef enum
        WAIT_EVENT_PARALLEL_FINISH,
        WAIT_EVENT_PROCARRAY_GROUP_UPDATE,
        WAIT_EVENT_PROMOTE,
+       WAIT_EVENT_RECOVERY_PAUSE,
        WAIT_EVENT_REPLICATION_ORIGIN_DROP,
        WAIT_EVENT_REPLICATION_SLOT_DROP,
        WAIT_EVENT_SAFE_SNAPSHOT,