summaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/.gitignore1
-rw-r--r--doc/src/sgml/Makefile4
-rw-r--r--doc/src/sgml/filelist.sgml1
-rw-r--r--doc/src/sgml/meson.build12
-rw-r--r--doc/src/sgml/monitoring.sgml1271
5 files changed, 28 insertions, 1261 deletions
diff --git a/doc/src/sgml/.gitignore b/doc/src/sgml/.gitignore
index d8e3dab3380..1ccb72227e2 100644
--- a/doc/src/sgml/.gitignore
+++ b/doc/src/sgml/.gitignore
@@ -17,6 +17,7 @@
/errcodes-table.sgml
/keywords-table.sgml
/version.sgml
+/wait_event_types.sgml
# Assorted byproducts from building the above
/postgres-full.xml
/INSTALL.html
diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile
index 71cbef230f3..1e55e531dbf 100644
--- a/doc/src/sgml/Makefile
+++ b/doc/src/sgml/Makefile
@@ -58,7 +58,7 @@ override XSLTPROCFLAGS += --stringparam pg.version '$(VERSION)'
GENERATED_SGML = version.sgml \
features-supported.sgml features-unsupported.sgml errcodes-table.sgml \
- keywords-table.sgml
+ keywords-table.sgml wait_event_types.sgml
ALLSGML := $(wildcard $(srcdir)/*.sgml $(srcdir)/ref/*.sgml) $(GENERATED_SGML)
@@ -111,6 +111,8 @@ errcodes-table.sgml: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errco
keywords-table.sgml: $(top_srcdir)/src/include/parser/kwlist.h $(wildcard $(srcdir)/keywords/sql*.txt) generate-keywords-table.pl
$(PERL) $(srcdir)/generate-keywords-table.pl $(srcdir) > $@
+wait_event_types.sgml: $(top_srcdir)/src/backend/utils/activity/wait_event_names.txt $(top_srcdir)/src/backend/utils/activity/generate-wait_event_types.pl
+ $(PERL) $(top_srcdir)/src/backend/utils/activity/generate-wait_event_types.pl --docs $<
##
## Generation of some text files.
diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml
index 5465f9a46d6..63b0fc2a469 100644
--- a/doc/src/sgml/filelist.sgml
+++ b/doc/src/sgml/filelist.sgml
@@ -42,6 +42,7 @@
<!ENTITY maintenance SYSTEM "maintenance.sgml">
<!ENTITY manage-ag SYSTEM "manage-ag.sgml">
<!ENTITY monitoring SYSTEM "monitoring.sgml">
+<!ENTITY wait_event_types SYSTEM "wait_event_types.sgml">
<!ENTITY regress SYSTEM "regress.sgml">
<!ENTITY runtime SYSTEM "runtime.sgml">
<!ENTITY config SYSTEM "config.sgml">
diff --git a/doc/src/sgml/meson.build b/doc/src/sgml/meson.build
index c6d77b5a150..16c1aa980c9 100644
--- a/doc/src/sgml/meson.build
+++ b/doc/src/sgml/meson.build
@@ -46,6 +46,18 @@ doc_generated += custom_target('errcodes-table.sgml',
capture: true,
)
+doc_generated += custom_target('wait_event_types.sgml',
+ input: files(
+ '../../../src/backend/utils/activity/wait_event_names.txt'),
+ output: 'wait_event_types.sgml',
+ command: [perl,
+ files('../../../src/backend/utils/activity/generate-wait_event_types.pl'),
+ '--outdir', '@OUTDIR@', '--docs', '@INPUT@'],
+ build_by_default: false,
+ install: false,
+ capture: false,
+)
+
# FIXME: this actually has further inputs, adding depfile support to
# generate-keywords-table.pl is probably the best way to address that
# robustly.
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 5cfdc70c03f..506aeaa8799 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -1100,1266 +1100,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
</tgroup>
</table>
- <table id="wait-event-activity-table">
- <title>Wait Events of Type <literal>Activity</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>Activity</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>ArchiverMain</literal></entry>
- <entry>Waiting in main loop of archiver process.</entry>
- </row>
- <row>
- <entry><literal>AutoVacuumMain</literal></entry>
- <entry>Waiting in main loop of autovacuum launcher process.</entry>
- </row>
- <row>
- <entry><literal>BgWriterHibernate</literal></entry>
- <entry>Waiting in background writer process, hibernating.</entry>
- </row>
- <row>
- <entry><literal>BgWriterMain</literal></entry>
- <entry>Waiting in main loop of background writer process.</entry>
- </row>
- <row>
- <entry><literal>CheckpointerMain</literal></entry>
- <entry>Waiting in main loop of checkpointer process.</entry>
- </row>
- <row>
- <entry><literal>LogicalApplyMain</literal></entry>
- <entry>Waiting in main loop of logical replication apply process.</entry>
- </row>
- <row>
- <entry><literal>LogicalLauncherMain</literal></entry>
- <entry>Waiting in main loop of logical replication launcher process.</entry>
- </row>
- <row>
- <entry><literal>LogicalParallelApplyMain</literal></entry>
- <entry>Waiting in main loop of logical replication parallel apply
- process.</entry>
- </row>
- <row>
- <entry><literal>RecoveryWalStream</literal></entry>
- <entry>Waiting in main loop of startup process for WAL to arrive, during
- streaming recovery.</entry>
- </row>
- <row>
- <entry><literal>SysLoggerMain</literal></entry>
- <entry>Waiting in main loop of syslogger process.</entry>
- </row>
- <row>
- <entry><literal>WalReceiverMain</literal></entry>
- <entry>Waiting in main loop of WAL receiver process.</entry>
- </row>
- <row>
- <entry><literal>WalSenderMain</literal></entry>
- <entry>Waiting in main loop of WAL sender process.</entry>
- </row>
- <row>
- <entry><literal>WalWriterMain</literal></entry>
- <entry>Waiting in main loop of WAL writer process.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table id="wait-event-bufferpin-table">
- <title>Wait Events of Type <literal>BufferPin</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>BufferPin</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>BufferPin</literal></entry>
- <entry>Waiting to acquire an exclusive pin on a buffer.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table id="wait-event-client-table">
- <title>Wait Events of Type <literal>Client</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>Client</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>ClientRead</literal></entry>
- <entry>Waiting to read data from the client.</entry>
- </row>
- <row>
- <entry><literal>ClientWrite</literal></entry>
- <entry>Waiting to write data to the client.</entry>
- </row>
- <row>
- <entry><literal>GSSOpenServer</literal></entry>
- <entry>Waiting to read data from the client while establishing a GSSAPI
- session.</entry>
- </row>
- <row>
- <entry><literal>LibPQWalReceiverConnect</literal></entry>
- <entry>Waiting in WAL receiver to establish connection to remote
- server.</entry>
- </row>
- <row>
- <entry><literal>LibPQWalReceiverReceive</literal></entry>
- <entry>Waiting in WAL receiver to receive data from remote server.</entry>
- </row>
- <row>
- <entry><literal>SSLOpenServer</literal></entry>
- <entry>Waiting for SSL while attempting connection.</entry>
- </row>
- <row>
- <entry><literal>WalSenderWaitForWAL</literal></entry>
- <entry>Waiting for WAL to be flushed in WAL sender process.</entry>
- </row>
- <row>
- <entry><literal>WalSenderWriteData</literal></entry>
- <entry>Waiting for any activity when processing replies from WAL
- receiver in WAL sender process.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table id="wait-event-extension-table">
- <title>Wait Events of Type <literal>Extension</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>Extension</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>Extension</literal></entry>
- <entry>Waiting in an extension.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table id="wait-event-io-table">
- <title>Wait Events of Type <literal>IO</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>IO</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>BaseBackupRead</literal></entry>
- <entry>Waiting for base backup to read from a file.</entry>
- </row>
- <row>
- <entry><literal>BaseBackupSync</literal></entry>
- <entry>Waiting for data written by a base backup to reach durable storage.</entry>
- </row>
- <row>
- <entry><literal>BaseBackupWrite</literal></entry>
- <entry>Waiting for base backup to write to a file.</entry>
- </row>
- <row>
- <entry><literal>BufFileRead</literal></entry>
- <entry>Waiting for a read from a buffered file.</entry>
- </row>
- <row>
- <entry><literal>BufFileTruncate</literal></entry>
- <entry>Waiting for a buffered file to be truncated.</entry>
- </row>
- <row>
- <entry><literal>BufFileWrite</literal></entry>
- <entry>Waiting for a write to a buffered file.</entry>
- </row>
- <row>
- <entry><literal>ControlFileRead</literal></entry>
- <entry>Waiting for a read from the <filename>pg_control</filename>
- file.</entry>
- </row>
- <row>
- <entry><literal>ControlFileSync</literal></entry>
- <entry>Waiting for the <filename>pg_control</filename> file to reach
- durable storage.</entry>
- </row>
- <row>
- <entry><literal>ControlFileSyncUpdate</literal></entry>
- <entry>Waiting for an update to the <filename>pg_control</filename> file
- to reach durable storage.</entry>
- </row>
- <row>
- <entry><literal>ControlFileWrite</literal></entry>
- <entry>Waiting for a write to the <filename>pg_control</filename>
- file.</entry>
- </row>
- <row>
- <entry><literal>ControlFileWriteUpdate</literal></entry>
- <entry>Waiting for a write to update the <filename>pg_control</filename>
- file.</entry>
- </row>
- <row>
- <entry><literal>CopyFileRead</literal></entry>
- <entry>Waiting for a read during a file copy operation.</entry>
- </row>
- <row>
- <entry><literal>CopyFileWrite</literal></entry>
- <entry>Waiting for a write during a file copy operation.</entry>
- </row>
- <row>
- <entry><literal>DSMAllocate</literal></entry>
- <entry>Waiting for a dynamic shared memory segment to be
- allocated.</entry>
- </row>
- <row>
- <entry><literal>DSMFillZeroWrite</literal></entry>
- <entry>Waiting to fill a dynamic shared memory backing file with
- zeroes.</entry>
- </row>
- <row>
- <entry><literal>DataFileExtend</literal></entry>
- <entry>Waiting for a relation data file to be extended.</entry>
- </row>
- <row>
- <entry><literal>DataFileFlush</literal></entry>
- <entry>Waiting for a relation data file to reach durable storage.</entry>
- </row>
- <row>
- <entry><literal>DataFileImmediateSync</literal></entry>
- <entry>Waiting for an immediate synchronization of a relation data file to
- durable storage.</entry>
- </row>
- <row>
- <entry><literal>DataFilePrefetch</literal></entry>
- <entry>Waiting for an asynchronous prefetch from a relation data
- file.</entry>
- </row>
- <row>
- <entry><literal>DataFileRead</literal></entry>
- <entry>Waiting for a read from a relation data file.</entry>
- </row>
- <row>
- <entry><literal>DataFileSync</literal></entry>
- <entry>Waiting for changes to a relation data file to reach durable storage.</entry>
- </row>
- <row>
- <entry><literal>DataFileTruncate</literal></entry>
- <entry>Waiting for a relation data file to be truncated.</entry>
- </row>
- <row>
- <entry><literal>DataFileWrite</literal></entry>
- <entry>Waiting for a write to a relation data file.</entry>
- </row>
- <row>
- <entry><literal>LockFileAddToDataDirRead</literal></entry>
- <entry>Waiting for a read while adding a line to the data directory lock
- file.</entry>
- </row>
- <row>
- <entry><literal>LockFileAddToDataDirSync</literal></entry>
- <entry>Waiting for data to reach durable storage while adding a line to the
- data directory lock file.</entry>
- </row>
- <row>
- <entry><literal>LockFileAddToDataDirWrite</literal></entry>
- <entry>Waiting for a write while adding a line to the data directory
- lock file.</entry>
- </row>
- <row>
- <entry><literal>LockFileCreateRead</literal></entry>
- <entry>Waiting to read while creating the data directory lock
- file.</entry>
- </row>
- <row>
- <entry><literal>LockFileCreateSync</literal></entry>
- <entry>Waiting for data to reach durable storage while creating the data
- directory lock file.</entry>
- </row>
- <row>
- <entry><literal>LockFileCreateWrite</literal></entry>
- <entry>Waiting for a write while creating the data directory lock
- file.</entry>
- </row>
- <row>
- <entry><literal>LockFileReCheckDataDirRead</literal></entry>
- <entry>Waiting for a read during recheck of the data directory lock
- file.</entry>
- </row>
- <row>
- <entry><literal>LogicalRewriteCheckpointSync</literal></entry>
- <entry>Waiting for logical rewrite mappings to reach durable storage
- during a checkpoint.</entry>
- </row>
- <row>
- <entry><literal>LogicalRewriteMappingSync</literal></entry>
- <entry>Waiting for mapping data to reach durable storage during a logical
- rewrite.</entry>
- </row>
- <row>
- <entry><literal>LogicalRewriteMappingWrite</literal></entry>
- <entry>Waiting for a write of mapping data during a logical
- rewrite.</entry>
- </row>
- <row>
- <entry><literal>LogicalRewriteSync</literal></entry>
- <entry>Waiting for logical rewrite mappings to reach durable
- storage.</entry>
- </row>
- <row>
- <entry><literal>LogicalRewriteTruncate</literal></entry>
- <entry>Waiting for truncate of mapping data during a logical
- rewrite.</entry>
- </row>
- <row>
- <entry><literal>LogicalRewriteWrite</literal></entry>
- <entry>Waiting for a write of logical rewrite mappings.</entry>
- </row>
- <row>
- <entry><literal>RelationMapRead</literal></entry>
- <entry>Waiting for a read of the relation map file.</entry>
- </row>
- <row>
- <entry><literal>RelationMapReplace</literal></entry>
- <entry>Waiting for durable replacement of a relation map file.</entry>
- </row>
- <row>
- <entry><literal>RelationMapWrite</literal></entry>
- <entry>Waiting for a write to the relation map file.</entry>
- </row>
- <row>
- <entry><literal>ReorderBufferRead</literal></entry>
- <entry>Waiting for a read during reorder buffer management.</entry>
- </row>
- <row>
- <entry><literal>ReorderBufferWrite</literal></entry>
- <entry>Waiting for a write during reorder buffer management.</entry>
- </row>
- <row>
- <entry><literal>ReorderLogicalMappingRead</literal></entry>
- <entry>Waiting for a read of a logical mapping during reorder buffer
- management.</entry>
- </row>
- <row>
- <entry><literal>ReplicationSlotRead</literal></entry>
- <entry>Waiting for a read from a replication slot control file.</entry>
- </row>
- <row>
- <entry><literal>ReplicationSlotRestoreSync</literal></entry>
- <entry>Waiting for a replication slot control file to reach durable storage
- while restoring it to memory.</entry>
- </row>
- <row>
- <entry><literal>ReplicationSlotSync</literal></entry>
- <entry>Waiting for a replication slot control file to reach durable
- storage.</entry>
- </row>
- <row>
- <entry><literal>ReplicationSlotWrite</literal></entry>
- <entry>Waiting for a write to a replication slot control file.</entry>
- </row>
- <row>
- <entry><literal>SLRUFlushSync</literal></entry>
- <entry>Waiting for SLRU data to reach durable storage during a checkpoint
- or database shutdown.</entry>
- </row>
- <row>
- <entry><literal>SLRURead</literal></entry>
- <entry>Waiting for a read of an SLRU page.</entry>
- </row>
- <row>
- <entry><literal>SLRUSync</literal></entry>
- <entry>Waiting for SLRU data to reach durable storage following a page
- write.</entry>
- </row>
- <row>
- <entry><literal>SLRUWrite</literal></entry>
- <entry>Waiting for a write of an SLRU page.</entry>
- </row>
- <row>
- <entry><literal>SnapbuildRead</literal></entry>
- <entry>Waiting for a read of a serialized historical catalog
- snapshot.</entry>
- </row>
- <row>
- <entry><literal>SnapbuildSync</literal></entry>
- <entry>Waiting for a serialized historical catalog snapshot to reach
- durable storage.</entry>
- </row>
- <row>
- <entry><literal>SnapbuildWrite</literal></entry>
- <entry>Waiting for a write of a serialized historical catalog
- snapshot.</entry>
- </row>
- <row>
- <entry><literal>TimelineHistoryFileSync</literal></entry>
- <entry>Waiting for a timeline history file received via streaming
- replication to reach durable storage.</entry>
- </row>
- <row>
- <entry><literal>TimelineHistoryFileWrite</literal></entry>
- <entry>Waiting for a write of a timeline history file received via
- streaming replication.</entry>
- </row>
- <row>
- <entry><literal>TimelineHistoryRead</literal></entry>
- <entry>Waiting for a read of a timeline history file.</entry>
- </row>
- <row>
- <entry><literal>TimelineHistorySync</literal></entry>
- <entry>Waiting for a newly created timeline history file to reach durable
- storage.</entry>
- </row>
- <row>
- <entry><literal>TimelineHistoryWrite</literal></entry>
- <entry>Waiting for a write of a newly created timeline history
- file.</entry>
- </row>
- <row>
- <entry><literal>TwophaseFileRead</literal></entry>
- <entry>Waiting for a read of a two phase state file.</entry>
- </row>
- <row>
- <entry><literal>TwophaseFileSync</literal></entry>
- <entry>Waiting for a two phase state file to reach durable storage.</entry>
- </row>
- <row>
- <entry><literal>TwophaseFileWrite</literal></entry>
- <entry>Waiting for a write of a two phase state file.</entry>
- </row>
- <row>
- <entry><literal>VersionFileWrite</literal></entry>
- <entry>Waiting for the version file to be written while creating a database.</entry>
- </row>
- <row>
- <entry><literal>WALBootstrapSync</literal></entry>
- <entry>Waiting for WAL to reach durable storage during
- bootstrapping.</entry>
- </row>
- <row>
- <entry><literal>WALBootstrapWrite</literal></entry>
- <entry>Waiting for a write of a WAL page during bootstrapping.</entry>
- </row>
- <row>
- <entry><literal>WALCopyRead</literal></entry>
- <entry>Waiting for a read when creating a new WAL segment by copying an
- existing one.</entry>
- </row>
- <row>
- <entry><literal>WALCopySync</literal></entry>
- <entry>Waiting for a new WAL segment created by copying an existing one to
- reach durable storage.</entry>
- </row>
- <row>
- <entry><literal>WALCopyWrite</literal></entry>
- <entry>Waiting for a write when creating a new WAL segment by copying an
- existing one.</entry>
- </row>
- <row>
- <entry><literal>WALInitSync</literal></entry>
- <entry>Waiting for a newly initialized WAL file to reach durable
- storage.</entry>
- </row>
- <row>
- <entry><literal>WALInitWrite</literal></entry>
- <entry>Waiting for a write while initializing a new WAL file.</entry>
- </row>
- <row>
- <entry><literal>WALRead</literal></entry>
- <entry>Waiting for a read from a WAL file.</entry>
- </row>
- <row>
- <entry><literal>WALSenderTimelineHistoryRead</literal></entry>
- <entry>Waiting for a read from a timeline history file during a walsender
- timeline command.</entry>
- </row>
- <row>
- <entry><literal>WALSync</literal></entry>
- <entry>Waiting for a WAL file to reach durable storage.</entry>
- </row>
- <row>
- <entry><literal>WALSyncMethodAssign</literal></entry>
- <entry>Waiting for data to reach durable storage while assigning a new
- WAL sync method.</entry>
- </row>
- <row>
- <entry><literal>WALWrite</literal></entry>
- <entry>Waiting for a write to a WAL file.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table id="wait-event-ipc-table">
- <title>Wait Events of Type <literal>IPC</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>IPC</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>AppendReady</literal></entry>
- <entry>Waiting for subplan nodes of an <literal>Append</literal> plan
- node to be ready.</entry>
- </row>
- <row>
- <entry><literal>ArchiveCleanupCommand</literal></entry>
- <entry>Waiting for <xref linkend="guc-archive-cleanup-command"/> to
- complete.</entry>
- </row>
- <row>
- <entry><literal>ArchiveCommand</literal></entry>
- <entry>Waiting for <xref linkend="guc-archive-command"/> to
- complete.</entry>
- </row>
- <row>
- <entry><literal>BackendTermination</literal></entry>
- <entry>Waiting for the termination of another backend.</entry>
- </row>
- <row>
- <entry><literal>BackupWaitWalArchive</literal></entry>
- <entry>Waiting for WAL files required for a backup to be successfully
- archived.</entry>
- </row>
- <row>
- <entry><literal>BgWorkerShutdown</literal></entry>
- <entry>Waiting for background worker to shut down.</entry>
- </row>
- <row>
- <entry><literal>BgWorkerStartup</literal></entry>
- <entry>Waiting for background worker to start up.</entry>
- </row>
- <row>
- <entry><literal>BtreePage</literal></entry>
- <entry>Waiting for the page number needed to continue a parallel B-tree
- scan to become available.</entry>
- </row>
- <row>
- <entry><literal>BufferIO</literal></entry>
- <entry>Waiting for buffer I/O to complete.</entry>
- </row>
- <row>
- <entry><literal>CheckpointDone</literal></entry>
- <entry>Waiting for a checkpoint to complete.</entry>
- </row>
- <row>
- <entry><literal>CheckpointStart</literal></entry>
- <entry>Waiting for a checkpoint to start.</entry>
- </row>
- <row>
- <entry><literal>ExecuteGather</literal></entry>
- <entry>Waiting for activity from a child process while
- executing a <literal>Gather</literal> plan node.</entry>
- </row>
- <row>
- <entry><literal>HashBatchAllocate</literal></entry>
- <entry>Waiting for an elected Parallel Hash participant to allocate a hash
- table.</entry>
- </row>
- <row>
- <entry><literal>HashBatchElect</literal></entry>
- <entry>Waiting to elect a Parallel Hash participant to allocate a hash
- table.</entry>
- </row>
- <row>
- <entry><literal>HashBatchLoad</literal></entry>
- <entry>Waiting for other Parallel Hash participants to finish loading a
- hash table.</entry>
- </row>
- <row>
- <entry><literal>HashBuildAllocate</literal></entry>
- <entry>Waiting for an elected Parallel Hash participant to allocate the
- initial hash table.</entry>
- </row>
- <row>
- <entry><literal>HashBuildElect</literal></entry>
- <entry>Waiting to elect a Parallel Hash participant to allocate the
- initial hash table.</entry>
- </row>
- <row>
- <entry><literal>HashBuildHashInner</literal></entry>
- <entry>Waiting for other Parallel Hash participants to finish hashing the
- inner relation.</entry>
- </row>
- <row>
- <entry><literal>HashBuildHashOuter</literal></entry>
- <entry>Waiting for other Parallel Hash participants to finish partitioning
- the outer relation.</entry>
- </row>
- <row>
- <entry><literal>HashGrowBatchesDecide</literal></entry>
- <entry>Waiting to elect a Parallel Hash participant to decide on future
- batch growth.</entry>
- </row>
- <row>
- <entry><literal>HashGrowBatchesElect</literal></entry>
- <entry>Waiting to elect a Parallel Hash participant to allocate more
- batches.</entry>
- </row>
- <row>
- <entry><literal>HashGrowBatchesFinish</literal></entry>
- <entry>Waiting for an elected Parallel Hash participant to decide on
- future batch growth.</entry>
- </row>
- <row>
- <entry><literal>HashGrowBatchesReallocate</literal></entry>
- <entry>Waiting for an elected Parallel Hash participant to allocate more
- batches.</entry>
- </row>
- <row>
- <entry><literal>HashGrowBatchesRepartition</literal></entry>
- <entry>Waiting for other Parallel Hash participants to finish
- repartitioning.</entry>
- </row>
- <row>
- <entry><literal>HashGrowBucketsElect</literal></entry>
- <entry>Waiting to elect a Parallel Hash participant to allocate more
- buckets.</entry>
- </row>
- <row>
- <entry><literal>HashGrowBucketsReallocate</literal></entry>
- <entry>Waiting for an elected Parallel Hash participant to finish
- allocating more buckets.</entry>
- </row>
- <row>
- <entry><literal>HashGrowBucketsReinsert</literal></entry>
- <entry>Waiting for other Parallel Hash participants to finish inserting
- tuples into new buckets.</entry>
- </row>
- <row>
- <entry><literal>LogicalApplySendData</literal></entry>
- <entry>Waiting for a logical replication leader apply process to send
- data to a parallel apply process.</entry>
- </row>
- <row>
- <entry><literal>LogicalParallelApplyStateChange</literal></entry>
- <entry>Waiting for a logical replication parallel apply process to change
- state.</entry>
- </row>
- <row>
- <entry><literal>LogicalSyncData</literal></entry>
- <entry>Waiting for a logical replication remote server to send data for
- initial table synchronization.</entry>
- </row>
- <row>
- <entry><literal>LogicalSyncStateChange</literal></entry>
- <entry>Waiting for a logical replication remote server to change
- state.</entry>
- </row>
- <row>
- <entry><literal>MessageQueueInternal</literal></entry>
- <entry>Waiting for another process to be attached to a shared message
- queue.</entry>
- </row>
- <row>
- <entry><literal>MessageQueuePutMessage</literal></entry>
- <entry>Waiting to write a protocol message to a shared message queue.</entry>
- </row>
- <row>
- <entry><literal>MessageQueueReceive</literal></entry>
- <entry>Waiting to receive bytes from a shared message queue.</entry>
- </row>
- <row>
- <entry><literal>MessageQueueSend</literal></entry>
- <entry>Waiting to send bytes to a shared message queue.</entry>
- </row>
- <row>
- <entry><literal>ParallelBitmapScan</literal></entry>
- <entry>Waiting for parallel bitmap scan to become initialized.</entry>
- </row>
- <row>
- <entry><literal>ParallelCreateIndexScan</literal></entry>
- <entry>Waiting for parallel <command>CREATE INDEX</command> workers to
- finish heap scan.</entry>
- </row>
- <row>
- <entry><literal>ParallelFinish</literal></entry>
- <entry>Waiting for parallel workers to finish computing.</entry>
- </row>
- <row>
- <entry><literal>ProcArrayGroupUpdate</literal></entry>
- <entry>Waiting for the group leader to clear the transaction ID at
- end of a parallel operation.</entry>
- </row>
- <row>
- <entry><literal>ProcSignalBarrier</literal></entry>
- <entry>Waiting for a barrier event to be processed by all
- backends.</entry>
- </row>
- <row>
- <entry><literal>Promote</literal></entry>
- <entry>Waiting for standby promotion.</entry>
- </row>
- <row>
- <entry><literal>RecoveryConflictSnapshot</literal></entry>
- <entry>Waiting for recovery conflict resolution for a vacuum
- cleanup.</entry>
- </row>
- <row>
- <entry><literal>RecoveryConflictTablespace</literal></entry>
- <entry>Waiting for recovery conflict resolution for dropping a
- tablespace.</entry>
- </row>
- <row>
- <entry><literal>RecoveryEndCommand</literal></entry>
- <entry>Waiting for <xref linkend="guc-recovery-end-command"/> to
- complete.</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 so it can be
- dropped.</entry>
- </row>
- <row>
- <entry><literal>ReplicationSlotDrop</literal></entry>
- <entry>Waiting for a replication slot to become inactive so it can be
- dropped.</entry>
- </row>
- <row>
- <entry><literal>RestoreCommand</literal></entry>
- <entry>Waiting for <xref linkend="guc-restore-command"/> to
- complete.</entry>
- </row>
- <row>
- <entry><literal>SafeSnapshot</literal></entry>
- <entry>Waiting to obtain a valid snapshot for a <literal>READ ONLY
- DEFERRABLE</literal> transaction.</entry>
- </row>
- <row>
- <entry><literal>SyncRep</literal></entry>
- <entry>Waiting for confirmation from a remote server during synchronous
- replication.</entry>
- </row>
- <row>
- <entry><literal>WalReceiverExit</literal></entry>
- <entry>Waiting for the WAL receiver to exit.</entry>
- </row>
- <row>
- <entry><literal>WalReceiverWaitStart</literal></entry>
- <entry>Waiting for startup process to send initial data for streaming
- replication.</entry>
- </row>
- <row>
- <entry><literal>XactGroupUpdate</literal></entry>
- <entry>Waiting for the group leader to update transaction status at
- end of a parallel operation.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table id="wait-event-lock-table">
- <title>Wait Events of Type <literal>Lock</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>Lock</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>advisory</literal></entry>
- <entry>Waiting to acquire an advisory user lock.</entry>
- </row>
- <row>
- <entry><literal>applytransaction</literal></entry>
- <entry>Waiting to acquire a lock on a remote transaction being applied
- by a logical replication subscriber.</entry>
- </row>
- <row>
- <entry><literal>extend</literal></entry>
- <entry>Waiting to extend a relation.</entry>
- </row>
- <row>
- <entry><literal>frozenid</literal></entry>
- <entry>Waiting to
- update <structname>pg_database</structname>.<structfield>datfrozenxid</structfield>
- and <structname>pg_database</structname>.<structfield>datminmxid</structfield>.</entry>
- </row>
- <row>
- <entry><literal>object</literal></entry>
- <entry>Waiting to acquire a lock on a non-relation database object.</entry>
- </row>
- <row>
- <entry><literal>page</literal></entry>
- <entry>Waiting to acquire a lock on a page of a relation.</entry>
- </row>
- <row>
- <entry><literal>relation</literal></entry>
- <entry>Waiting to acquire a lock on a relation.</entry>
- </row>
- <row>
- <entry><literal>spectoken</literal></entry>
- <entry>Waiting to acquire a speculative insertion lock.</entry>
- </row>
- <row>
- <entry><literal>transactionid</literal></entry>
- <entry>Waiting for a transaction to finish.</entry>
- </row>
- <row>
- <entry><literal>tuple</literal></entry>
- <entry>Waiting to acquire a lock on a tuple.</entry>
- </row>
- <row>
- <entry><literal>userlock</literal></entry>
- <entry>Waiting to acquire a user lock.</entry>
- </row>
- <row>
- <entry><literal>virtualxid</literal></entry>
- <entry>Waiting to acquire a virtual transaction ID lock; see
- <xref linkend="transaction-id"/>.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table id="wait-event-lwlock-table">
- <title>Wait Events of Type <literal>LWLock</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>LWLock</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>AddinShmemInit</literal></entry>
- <entry>Waiting to manage an extension's space allocation in shared
- memory.</entry>
- </row>
- <row>
- <entry><literal>AutoFile</literal></entry>
- <entry>Waiting to update the <filename>postgresql.auto.conf</filename>
- file.</entry>
- </row>
- <row>
- <entry><literal>Autovacuum</literal></entry>
- <entry>Waiting to read or update the current state of autovacuum
- workers.</entry>
- </row>
- <row>
- <entry><literal>AutovacuumSchedule</literal></entry>
- <entry>Waiting to ensure that a table selected for autovacuum
- still needs vacuuming.</entry>
- </row>
- <row>
- <entry><literal>BackgroundWorker</literal></entry>
- <entry>Waiting to read or update background worker state.</entry>
- </row>
- <row>
- <entry><literal>BtreeVacuum</literal></entry>
- <entry>Waiting to read or update vacuum-related information for a
- B-tree index.</entry>
- </row>
- <row>
- <entry><literal>BufferContent</literal></entry>
- <entry>Waiting to access a data page in memory.</entry>
- </row>
- <row>
- <entry><literal>BufferMapping</literal></entry>
- <entry>Waiting to associate a data block with a buffer in the buffer
- pool.</entry>
- </row>
- <row>
- <entry><literal>CheckpointerComm</literal></entry>
- <entry>Waiting to manage fsync requests.</entry>
- </row>
- <row>
- <entry><literal>CommitTs</literal></entry>
- <entry>Waiting to read or update the last value set for a
- transaction commit timestamp.</entry>
- </row>
- <row>
- <entry><literal>CommitTsBuffer</literal></entry>
- <entry>Waiting for I/O on a commit timestamp SLRU buffer.</entry>
- </row>
- <row>
- <entry><literal>CommitTsSLRU</literal></entry>
- <entry>Waiting to access the commit timestamp SLRU cache.</entry>
- </row>
- <row>
- <entry><literal>ControlFile</literal></entry>
- <entry>Waiting to read or update the <filename>pg_control</filename>
- file or create a new WAL file.</entry>
- </row>
- <row>
- <entry><literal>DynamicSharedMemoryControl</literal></entry>
- <entry>Waiting to read or update dynamic shared memory allocation
- information.</entry>
- </row>
- <row>
- <entry><literal>LockFastPath</literal></entry>
- <entry>Waiting to read or update a process' fast-path lock
- information.</entry>
- </row>
- <row>
- <entry><literal>LockManager</literal></entry>
- <entry>Waiting to read or update information
- about <quote>heavyweight</quote> locks.</entry>
- </row>
- <row>
- <entry><literal>LogicalRepLauncherDSA</literal></entry>
- <entry>Waiting to access logical replication launcher's dynamic shared
- memory allocator.</entry>
- </row>
- <row>
- <entry><literal>LogicalRepLauncherHash</literal></entry>
- <entry>Waiting to access logical replication launcher's shared
- hash table.</entry>
- </row>
- <row>
- <entry><literal>LogicalRepWorker</literal></entry>
- <entry>Waiting to read or update the state of logical replication
- workers.</entry>
- </row>
- <row>
- <entry><literal>MultiXactGen</literal></entry>
- <entry>Waiting to read or update shared multixact state.</entry>
- </row>
- <row>
- <entry><literal>MultiXactMemberBuffer</literal></entry>
- <entry>Waiting for I/O on a multixact member SLRU buffer.</entry>
- </row>
- <row>
- <entry><literal>MultiXactMemberSLRU</literal></entry>
- <entry>Waiting to access the multixact member SLRU cache.</entry>
- </row>
- <row>
- <entry><literal>MultiXactOffsetBuffer</literal></entry>
- <entry>Waiting for I/O on a multixact offset SLRU buffer.</entry>
- </row>
- <row>
- <entry><literal>MultiXactOffsetSLRU</literal></entry>
- <entry>Waiting to access the multixact offset SLRU cache.</entry>
- </row>
- <row>
- <entry><literal>MultiXactTruncation</literal></entry>
- <entry>Waiting to read or truncate multixact information.</entry>
- </row>
- <row>
- <entry><literal>NotifyBuffer</literal></entry>
- <entry>Waiting for I/O on a <command>NOTIFY</command> message SLRU
- buffer.</entry>
- </row>
- <row>
- <entry><literal>NotifyQueue</literal></entry>
- <entry>Waiting to read or update <command>NOTIFY</command> messages.</entry>
- </row>
- <row>
- <entry><literal>NotifyQueueTail</literal></entry>
- <entry>Waiting to update limit on <command>NOTIFY</command> message
- storage.</entry>
- </row>
- <row>
- <entry><literal>NotifySLRU</literal></entry>
- <entry>Waiting to access the <command>NOTIFY</command> message SLRU
- cache.</entry>
- </row>
- <row>
- <entry><literal>OidGen</literal></entry>
- <entry>Waiting to allocate a new OID.</entry>
- </row>
- <row>
- <entry><literal>OldSnapshotTimeMap</literal></entry>
- <entry>Waiting to read or update old snapshot control information.</entry>
- </row>
- <row>
- <entry><literal>ParallelAppend</literal></entry>
- <entry>Waiting to choose the next subplan during Parallel Append plan
- execution.</entry>
- </row>
- <row>
- <entry><literal>ParallelHashJoin</literal></entry>
- <entry>Waiting to synchronize workers during Parallel Hash Join plan
- execution.</entry>
- </row>
- <row>
- <entry><literal>ParallelQueryDSA</literal></entry>
- <entry>Waiting for parallel query dynamic shared memory allocation.</entry>
- </row>
- <row>
- <entry><literal>PerSessionDSA</literal></entry>
- <entry>Waiting for parallel query dynamic shared memory allocation.</entry>
- </row>
- <row>
- <entry><literal>PerSessionRecordType</literal></entry>
- <entry>Waiting to access a parallel query's information about composite
- types.</entry>
- </row>
- <row>
- <entry><literal>PerSessionRecordTypmod</literal></entry>
- <entry>Waiting to access a parallel query's information about type
- modifiers that identify anonymous record types.</entry>
- </row>
- <row>
- <entry><literal>PerXactPredicateList</literal></entry>
- <entry>Waiting to access the list of predicate locks held by the current
- serializable transaction during a parallel query.</entry>
- </row>
- <row>
- <entry><literal>PgStatsData</literal></entry>
- <entry>Waiting for shared memory stats data access</entry>
- </row>
- <row>
- <entry><literal>PgStatsDSA</literal></entry>
- <entry>Waiting for stats dynamic shared memory allocator access</entry>
- </row>
- <row>
- <entry><literal>PgStatsHash</literal></entry>
- <entry>Waiting for stats shared memory hash table access</entry>
- </row>
- <row>
- <entry><literal>PredicateLockManager</literal></entry>
- <entry>Waiting to access predicate lock information used by
- serializable transactions.</entry>
- </row>
- <row>
- <entry><literal>ProcArray</literal></entry>
- <entry>Waiting to access the shared per-process data structures
- (typically, to get a snapshot or report a session's transaction
- ID).</entry>
- </row>
- <row>
- <entry><literal>RelationMapping</literal></entry>
- <entry>Waiting to read or update
- a <filename>pg_filenode.map</filename> file (used to track the
- filenode assignments of certain system catalogs).</entry>
- </row>
- <row>
- <entry><literal>RelCacheInit</literal></entry>
- <entry>Waiting to read or update a <filename>pg_internal.init</filename>
- relation cache initialization file.</entry>
- </row>
- <row>
- <entry><literal>ReplicationOrigin</literal></entry>
- <entry>Waiting to create, drop or use a replication origin.</entry>
- </row>
- <row>
- <entry><literal>ReplicationOriginState</literal></entry>
- <entry>Waiting to read or update the progress of one replication
- origin.</entry>
- </row>
- <row>
- <entry><literal>ReplicationSlotAllocation</literal></entry>
- <entry>Waiting to allocate or free a replication slot.</entry>
- </row>
- <row>
- <entry><literal>ReplicationSlotControl</literal></entry>
- <entry>Waiting to read or update replication slot state.</entry>
- </row>
- <row>
- <entry><literal>ReplicationSlotIO</literal></entry>
- <entry>Waiting for I/O on a replication slot.</entry>
- </row>
- <row>
- <entry><literal>SerialBuffer</literal></entry>
- <entry>Waiting for I/O on a serializable transaction conflict SLRU
- buffer.</entry>
- </row>
- <row>
- <entry><literal>SerializableFinishedList</literal></entry>
- <entry>Waiting to access the list of finished serializable
- transactions.</entry>
- </row>
- <row>
- <entry><literal>SerializablePredicateList</literal></entry>
- <entry>Waiting to access the list of predicate locks held by
- serializable transactions.</entry>
- </row>
- <row>
- <entry><literal>SerializableXactHash</literal></entry>
- <entry>Waiting to read or update information about serializable
- transactions.</entry>
- </row>
- <row>
- <entry><literal>SerialSLRU</literal></entry>
- <entry>Waiting to access the serializable transaction conflict SLRU
- cache.</entry>
- </row>
- <row>
- <entry><literal>SharedTidBitmap</literal></entry>
- <entry>Waiting to access a shared TID bitmap during a parallel bitmap
- index scan.</entry>
- </row>
- <row>
- <entry><literal>SharedTupleStore</literal></entry>
- <entry>Waiting to access a shared tuple store during parallel
- query.</entry>
- </row>
- <row>
- <entry><literal>ShmemIndex</literal></entry>
- <entry>Waiting to find or allocate space in shared memory.</entry>
- </row>
- <row>
- <entry><literal>SInvalRead</literal></entry>
- <entry>Waiting to retrieve messages from the shared catalog invalidation
- queue.</entry>
- </row>
- <row>
- <entry><literal>SInvalWrite</literal></entry>
- <entry>Waiting to add a message to the shared catalog invalidation
- queue.</entry>
- </row>
- <row>
- <entry><literal>SubtransBuffer</literal></entry>
- <entry>Waiting for I/O on a sub-transaction SLRU buffer.</entry>
- </row>
- <row>
- <entry><literal>SubtransSLRU</literal></entry>
- <entry>Waiting to access the sub-transaction SLRU cache.</entry>
- </row>
- <row>
- <entry><literal>SyncRep</literal></entry>
- <entry>Waiting to read or update information about the state of
- synchronous replication.</entry>
- </row>
- <row>
- <entry><literal>SyncScan</literal></entry>
- <entry>Waiting to select the starting location of a synchronized table
- scan.</entry>
- </row>
- <row>
- <entry><literal>TablespaceCreate</literal></entry>
- <entry>Waiting to create or drop a tablespace.</entry>
- </row>
- <row>
- <entry><literal>TwoPhaseState</literal></entry>
- <entry>Waiting to read or update the state of prepared transactions.</entry>
- </row>
- <row>
- <entry><literal>WALBufMapping</literal></entry>
- <entry>Waiting to replace a page in WAL buffers.</entry>
- </row>
- <row>
- <entry><literal>WALInsert</literal></entry>
- <entry>Waiting to insert WAL data into a memory buffer.</entry>
- </row>
- <row>
- <entry><literal>WALWrite</literal></entry>
- <entry>Waiting for WAL buffers to be written to disk.</entry>
- </row>
- <row>
- <entry><literal>WrapLimitsVacuum</literal></entry>
- <entry>Waiting to update limits on transaction id and multixact
- consumption.</entry>
- </row>
- <row>
- <entry><literal>XactBuffer</literal></entry>
- <entry>Waiting for I/O on a transaction status SLRU buffer.</entry>
- </row>
- <row>
- <entry><literal>XactSLRU</literal></entry>
- <entry>Waiting to access the transaction status SLRU cache.</entry>
- </row>
- <row>
- <entry><literal>XactTruncation</literal></entry>
- <entry>Waiting to execute <function>pg_xact_status</function> or update
- the oldest transaction ID available to it.</entry>
- </row>
- <row>
- <entry><literal>XidGen</literal></entry>
- <entry>Waiting to allocate a new transaction ID.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <note>
- <para>
- Extensions can add <literal>LWLock</literal> types to the list shown in
- <xref linkend="wait-event-lwlock-table"/>. In some cases, the name
- assigned by an extension will not be available in all server processes;
- so an <literal>LWLock</literal> wait event might be reported as
- just <quote><literal>extension</literal></quote> rather than the
- extension-assigned name.
- </para>
- </note>
-
- <table id="wait-event-timeout-table">
- <title>Wait Events of Type <literal>Timeout</literal></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry><literal>Timeout</literal> Wait Event</entry>
- <entry>Description</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><literal>BaseBackupThrottle</literal></entry>
- <entry>Waiting during base backup when throttling activity.</entry>
- </row>
- <row>
- <entry><literal>CheckpointWriteDelay</literal></entry>
- <entry>Waiting between writes while performing a checkpoint.</entry>
- </row>
- <row>
- <entry><literal>PgSleep</literal></entry>
- <entry>Waiting due to a call to <function>pg_sleep</function> or
- a sibling function.</entry>
- </row>
- <row>
- <entry><literal>RecoveryApplyDelay</literal></entry>
- <entry>Waiting to apply WAL during recovery because of a delay
- setting.</entry>
- </row>
- <row>
- <entry><literal>RecoveryRetrieveRetryInterval</literal></entry>
- <entry>Waiting during recovery when WAL data is not available from any
- source (<filename>pg_wal</filename>, archive or stream).</entry>
- </row>
- <row>
- <entry><literal>RegisterSyncRequest</literal></entry>
- <entry>Waiting while sending synchronization requests to the
- checkpointer, because the request queue is full.</entry>
- </row>
- <row>
- <entry><literal>SpinDelay</literal></entry>
- <entry>Waiting while acquiring a contended spinlock.</entry>
- </row>
- <row>
- <entry><literal>VacuumDelay</literal></entry>
- <entry>Waiting in a cost-based vacuum delay point.</entry>
- </row>
- <row>
- <entry><literal>VacuumTruncate</literal></entry>
- <entry>Waiting to acquire an exclusive lock to truncate off any
- empty pages at the end of a table vacuumed.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
+ &wait_event_types;
<para>
Here is an example of how wait events can be viewed:
@@ -2374,6 +1115,16 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
</programlisting>
</para>
+ <note>
+ <para>
+ Extensions can add <literal>LWLock</literal> types to the list shown in
+ <xref linkend="wait-event-lwlock-table"/>. In some cases, the name
+ assigned by an extension will not be available in all server processes;
+ so an <literal>LWLock</literal> wait event might be reported as
+ just <quote><literal>extension</literal></quote> rather than the
+ extension-assigned name.
+ </para>
+ </note>
</sect2>
<sect2 id="monitoring-pg-stat-replication-view">