This is the multi-page printable view of this section. .
PostgreSQL Wait Event Atlas
- 1: Wait-event triage map
- 2: Version matrix
- 3: Operator glossary
-
4: Lock waits
- 4.1: Lock: advisory
- 4.2: Lock: applytransaction
- 4.3: Lock: extend
- 4.4: Lock: frozenid
- 4.5: Lock: object
- 4.6: Lock: page
- 4.7: Lock: relation
- 4.8: Lock: spectoken
- 4.9: Lock: transactionid
- 4.10: Lock: tuple
- 4.11: Lock: userlock
- 4.12: Lock: virtualxid
-
5: LWLock waits
- 5.1: LWLock: AddinShmemInit
- 5.2: LWLock: AioUringCompletion
- 5.3: LWLock: AioWorkerSubmissionQueue
- 5.4: LWLock: AutoFile
- 5.5: LWLock: Autovacuum
- 5.6: LWLock: AutovacuumSchedule
- 5.7: LWLock: BackgroundWorker
- 5.8: LWLock: BtreeVacuum
- 5.9: LWLock: BufferContent
- 5.10: LWLock: BufferMapping
- 5.11: LWLock: Checkpoint
- 5.12: LWLock: CheckpointerComm
- 5.13: LWLock: CommitTs
- 5.14: LWLock: CommitTsBuffer
- 5.15: LWLock: CommitTsSLRU
- 5.16: LWLock: ControlFile
- 5.17: LWLock: DSMRegistry
- 5.18: LWLock: DSMRegistryDSA
- 5.19: LWLock: DSMRegistryHash
- 5.20: LWLock: DynamicSharedMemoryControl
- 5.21: LWLock: InjectionPoint
- 5.22: LWLock: LockFastPath
- 5.23: LWLock: LockManager
- 5.24: LWLock: LogicalRepLauncherDSA
- 5.25: LWLock: LogicalRepLauncherHash
- 5.26: LWLock: LogicalRepWorker
- 5.27: LWLock: MultiXactGen
- 5.28: LWLock: MultiXactMemberBuffer
- 5.29: LWLock: MultiXactMemberSLRU
- 5.30: LWLock: MultiXactOffsetBuffer
- 5.31: LWLock: MultiXactOffsetSLRU
- 5.32: LWLock: MultiXactTruncation
- 5.33: LWLock: NotifyBuffer
- 5.34: LWLock: NotifyQueue
- 5.35: LWLock: NotifyQueueTail
- 5.36: LWLock: NotifySLRU
- 5.37: LWLock: OidGen
- 5.38: LWLock: OldSnapshotTimeMap
- 5.39: LWLock: ParallelAppend
- 5.40: LWLock: ParallelBtreeScan
- 5.41: LWLock: ParallelHashJoin
- 5.42: LWLock: ParallelQueryDSA
- 5.43: LWLock: ParallelVacuumDSA
- 5.44: LWLock: PerSessionDSA
- 5.45: LWLock: PerSessionRecordType
- 5.46: LWLock: PerSessionRecordTypmod
- 5.47: LWLock: PerXactPredicateList
- 5.48: LWLock: PgStatsDSA
- 5.49: LWLock: PgStatsData
- 5.50: LWLock: PgStatsHash
- 5.51: LWLock: PredicateLockManager
- 5.52: LWLock: ProcArray
- 5.53: LWLock: RelCacheInit
- 5.54: LWLock: RelationMapping
- 5.55: LWLock: ReplicationOrigin
- 5.56: LWLock: ReplicationOriginState
- 5.57: LWLock: ReplicationSlotAllocation
- 5.58: LWLock: ReplicationSlotControl
- 5.59: LWLock: ReplicationSlotIO
- 5.60: LWLock: SInvalRead
- 5.61: LWLock: SInvalWrite
- 5.62: LWLock: SerialBuffer
- 5.63: LWLock: SerialControl
- 5.64: LWLock: SerialSLRU
- 5.65: LWLock: SerializableFinishedList
- 5.66: LWLock: SerializablePredicateList
- 5.67: LWLock: SerializableXactHash
- 5.68: LWLock: SharedTidBitmap
- 5.69: LWLock: SharedTupleStore
- 5.70: LWLock: ShmemIndex
- 5.71: LWLock: SubtransBuffer
- 5.72: LWLock: SubtransSLRU
- 5.73: LWLock: SyncRep
- 5.74: LWLock: SyncScan
- 5.75: LWLock: TablespaceCreate
- 5.76: LWLock: TwoPhaseState
- 5.77: LWLock: WALBufMapping
- 5.78: LWLock: WALInsert
- 5.79: LWLock: WALSummarizer
- 5.80: LWLock: WALWrite
- 5.81: LWLock: WaitEventCustom
- 5.82: LWLock: WrapLimitsVacuum
- 5.83: LWLock: XactBuffer
- 5.84: LWLock: XactSLRU
- 5.85: LWLock: XactTruncation
- 5.86: LWLock: XidGen
-
6: I/O waits
- 6.1: IO: AioIoCompletion
- 6.2: IO: AioIoUringExecution
- 6.3: IO: AioIoUringSubmit
- 6.4: IO: BasebackupRead
- 6.5: IO: BasebackupSync
- 6.6: IO: BasebackupWrite
- 6.7: IO: BuffileRead
- 6.8: IO: BuffileTruncate
- 6.9: IO: BuffileWrite
- 6.10: IO: ControlFileRead
- 6.11: IO: ControlFileSync
- 6.12: IO: ControlFileSyncUpdate
- 6.13: IO: ControlFileWrite
- 6.14: IO: ControlFileWriteUpdate
- 6.15: IO: CopyFileCopy
- 6.16: IO: CopyFileRead
- 6.17: IO: CopyFileWrite
- 6.18: IO: DataFileExtend
- 6.19: IO: DataFileFlush
- 6.20: IO: DataFileImmediateSync
- 6.21: IO: DataFilePrefetch
- 6.22: IO: DataFileRead
- 6.23: IO: DataFileSync
- 6.24: IO: DataFileTruncate
- 6.25: IO: DataFileWrite
- 6.26: IO: DsmAllocate
- 6.27: IO: DsmFillZeroWrite
- 6.28: IO: LockFileAddtodatadirRead
- 6.29: IO: LockFileAddtodatadirSync
- 6.30: IO: LockFileAddtodatadirWrite
- 6.31: IO: LockFileCreateRead
- 6.32: IO: LockFileCreateSync
- 6.33: IO: LockFileCreateWrite
- 6.34: IO: LockFileRecheckdatadirRead
- 6.35: IO: LogicalChangesRead
- 6.36: IO: LogicalChangesWrite
- 6.37: IO: LogicalRewriteCheckpointSync
- 6.38: IO: LogicalRewriteMappingSync
- 6.39: IO: LogicalRewriteMappingWrite
- 6.40: IO: LogicalRewriteSync
- 6.41: IO: LogicalRewriteTruncate
- 6.42: IO: LogicalRewriteWrite
- 6.43: IO: LogicalSubxactRead
- 6.44: IO: LogicalSubxactWrite
- 6.45: IO: RelationMapRead
- 6.46: IO: RelationMapReplace
- 6.47: IO: RelationMapSync
- 6.48: IO: RelationMapWrite
- 6.49: IO: ReorderBufferRead
- 6.50: IO: ReorderBufferWrite
- 6.51: IO: ReorderLogicalMappingRead
- 6.52: IO: ReplicationSlotRead
- 6.53: IO: ReplicationSlotRestoreSync
- 6.54: IO: ReplicationSlotSync
- 6.55: IO: ReplicationSlotWrite
- 6.56: IO: SlruFlushSync
- 6.57: IO: SlruRead
- 6.58: IO: SlruSync
- 6.59: IO: SlruWrite
- 6.60: IO: SnapbuildRead
- 6.61: IO: SnapbuildSync
- 6.62: IO: SnapbuildWrite
- 6.63: IO: TimelineHistoryFileSync
- 6.64: IO: TimelineHistoryFileWrite
- 6.65: IO: TimelineHistoryRead
- 6.66: IO: TimelineHistorySync
- 6.67: IO: TimelineHistoryWrite
- 6.68: IO: TwophaseFileRead
- 6.69: IO: TwophaseFileSync
- 6.70: IO: TwophaseFileWrite
- 6.71: IO: VersionFileSync
- 6.72: IO: VersionFileWrite
- 6.73: IO: WalBootstrapSync
- 6.74: IO: WalBootstrapWrite
- 6.75: IO: WalCopyRead
- 6.76: IO: WalCopySync
- 6.77: IO: WalCopyWrite
- 6.78: IO: WalInitSync
- 6.79: IO: WalInitWrite
- 6.80: IO: WalRead
- 6.81: IO: WalSummaryRead
- 6.82: IO: WalSummaryWrite
- 6.83: IO: WalSync
- 6.84: IO: WalSyncMethodAssign
- 6.85: IO: WalWrite
- 6.86: IO: WalsenderTimelineHistoryRead
-
7: IPC waits
- 7.1: IPC: AppendReady
- 7.2: IPC: ArchiveCleanupCommand
- 7.3: IPC: ArchiveCommand
- 7.4: IPC: BackendTermination
- 7.5: IPC: BackupWaitWalArchive
- 7.6: IPC: BgworkerShutdown
- 7.7: IPC: BgworkerStartup
- 7.8: IPC: BtreePage
- 7.9: IPC: BufferIo
- 7.10: IPC: CheckpointDelayComplete
- 7.11: IPC: CheckpointDelayStart
- 7.12: IPC: CheckpointDone
- 7.13: IPC: CheckpointStart
- 7.14: IPC: ExecuteGather
- 7.15: IPC: HashBatchAllocate
- 7.16: IPC: HashBatchElect
- 7.17: IPC: HashBatchLoad
- 7.18: IPC: HashBuildAllocate
- 7.19: IPC: HashBuildElect
- 7.20: IPC: HashBuildHashInner
- 7.21: IPC: HashBuildHashOuter
- 7.22: IPC: HashGrowBatchesDecide
- 7.23: IPC: HashGrowBatchesElect
- 7.24: IPC: HashGrowBatchesFinish
- 7.25: IPC: HashGrowBatchesReallocate
- 7.26: IPC: HashGrowBatchesRepartition
- 7.27: IPC: HashGrowBucketsElect
- 7.28: IPC: HashGrowBucketsReallocate
- 7.29: IPC: HashGrowBucketsReinsert
- 7.30: IPC: LogicalApplySendData
- 7.31: IPC: LogicalParallelApplyStateChange
- 7.32: IPC: LogicalSyncData
- 7.33: IPC: LogicalSyncStateChange
- 7.34: IPC: MessageQueueInternal
- 7.35: IPC: MessageQueuePutMessage
- 7.36: IPC: MessageQueueReceive
- 7.37: IPC: MessageQueueSend
- 7.38: IPC: MultixactCreation
- 7.39: IPC: ParallelBitmapScan
- 7.40: IPC: ParallelCreateIndexScan
- 7.41: IPC: ParallelFinish
- 7.42: IPC: ProcSignalBarrier
- 7.43: IPC: ProcarrayGroupUpdate
- 7.44: IPC: Promote
- 7.45: IPC: RecoveryConflictSnapshot
- 7.46: IPC: RecoveryConflictTablespace
- 7.47: IPC: RecoveryEndCommand
- 7.48: IPC: RecoveryPause
- 7.49: IPC: ReplicationOriginDrop
- 7.50: IPC: ReplicationSlotDrop
- 7.51: IPC: RestoreCommand
- 7.52: IPC: SafeSnapshot
- 7.53: IPC: SyncRep
- 7.54: IPC: WalReceiverExit
- 7.55: IPC: WalReceiverUpstreamCatchup
- 7.56: IPC: WalReceiverWaitStart
- 7.57: IPC: WalSummaryReady
- 7.58: IPC: XactGroupUpdate
- 8: Client waits
-
9: Activity waits
- 9.1: Activity: ArchiverMain
- 9.2: Activity: AutovacuumMain
- 9.3: Activity: BgwriterHibernate
- 9.4: Activity: BgwriterMain
- 9.5: Activity: CheckpointerMain
- 9.6: Activity: CheckpointerShutdown
- 9.7: Activity: IoWorkerMain
- 9.8: Activity: LogicalApplyMain
- 9.9: Activity: LogicalLauncherMain
- 9.10: Activity: LogicalParallelApplyMain
- 9.11: Activity: PgStatMain
- 9.12: Activity: RecoveryWalStream
- 9.13: Activity: ReplicationSlotsyncMain
- 9.14: Activity: ReplicationSlotsyncShutdown
- 9.15: Activity: SysloggerMain
- 9.16: Activity: WalReceiverMain
- 9.17: Activity: WalSenderMain
- 9.18: Activity: WalSummarizerWal
- 9.19: Activity: WalWriterMain
-
10: Timeout waits
- 10.1: Timeout: BaseBackupThrottle
- 10.2: Timeout: CheckpointWriteDelay
- 10.3: Timeout: PgSleep
- 10.4: Timeout: RecoveryApplyDelay
- 10.5: Timeout: RecoveryRetrieveRetryInterval
- 10.6: Timeout: RegisterSyncRequest
- 10.7: Timeout: SpinDelay
- 10.8: Timeout: VacuumDelay
- 10.9: Timeout: VacuumTruncate
- 10.10: Timeout: WalSummarizerError
-
11: BufferPin waits
- 11.1: BufferPin: BufferPin
-
12: Extension wait events
-
13: Related GUCs
- 13.1: [[guc:autovacuum_freeze_max_age]]
- 13.2: [[guc:autovacuum_multixact_freeze_max_age]]
- 13.3: [[guc:autovacuum_naptime]]
- 13.4: [[guc:checkpoint_timeout]]
- 13.5: [[guc:deadlock_timeout]]
- 13.6: [[guc:full_page_writes]]
- 13.7: [[guc:idle_in_transaction_session_timeout]]
- 13.8: [[guc:lock_timeout]]
- 13.9: [[guc:max_connections]]
- 13.10: [[guc:max_locks_per_transaction]]
- 13.11: [[guc:max_parallel_workers_per_gather]]
- 13.12: [[guc:max_wal_size]]
- 13.13: [[guc:shared_buffers]]
- 13.14: [[guc:synchronous_commit]]
- 13.15: [[guc:synchronous_standby_names]]
- 13.16: [[guc:vacuum_freeze_table_age]]
- 13.17: [[guc:vacuum_multixact_freeze_table_age]]
- 13.18: [[guc:wal_buffers]]
- 13.19: [[guc:wal_sender_timeout]]
- 13.20: [[guc:wal_writer_delay]]
- 13.21: [[guc:wal_writer_flush_after]]
-
14: Related metrics
- 14.1: [[metric:active_backends]]
- 14.2: [[metric:blocked_sessions]]
- 14.3: [[metric:blocks_read]]
- 14.4: [[metric:buffer_hit_ratio]]
- 14.5: [[metric:checkpoint_time]]
- 14.6: [[metric:commit_latency]]
- 14.7: [[metric:io_read_time]]
- 14.8: [[metric:io_write_time]]
- 14.9: [[metric:locks_per_backend]]
- 14.10: [[metric:multixact_member_io]]
- 14.11: [[metric:oldest_multixact_age]]
- 14.12: [[metric:oldest_transaction_age]]
- 14.13: [[metric:replication_flush_lag]]
- 14.14: [[metric:statement_latency]]
- 14.15: [[metric:statement_wal_bytes]]
- 14.16: [[metric:wait_event_share]]
- 14.17: [[metric:waiting_sessions]]
- 14.18: [[metric:wal_bytes]]
- 14.19: [[metric:wal_fpi]]
- 14.20: [[metric:wal_sync_time]]
- 14.21: [[metric:wal_write_time]]
- 14.22: [[metric:xact_slru_io]]
Start with the waiting sessions, not the event name
Capture who is waiting, how long, whether a transaction is open, and who blocks it. Then use the event page to connect the snapshot to PostgreSQL source and a bounded response.
official docs → pg_wait_events → source grep → executable SQLTake the first snapshot
Run this before restarting anything or cancelling a backend:
A wait-event snapshot shows where a process is sleeping now, not what consumed the elapsed query time. Repeat the snapshot and correlate it with latency, throughput, locks, and operating-system evidence before calling a wait the cause.
Continue with the wait-event triage map or open the class that matches wait_event_type.
Read by class
| Class | Read it as | First question |
|---|---|---|
| Lock | Another transaction or session owns a heavyweight lock | Who is at the head of the blocking chain? |
| LWLock | Internal shared-memory structure is contended | Is one internal resource hot across repeated samples? |
| IO | A backend is waiting for a file operation | Is storage slow, or is PostgreSQL simply doing expected work? |
| IPC | Processes are coordinating with each other | Which peer or phase has not reached the rendezvous? |
| Client | PostgreSQL is waiting on the application or network | Is the session idle, backpressured, or inside a transaction? |
| Activity | A background process is in its normal main loop | Is this expected idleness for that backend type? |
| Timeout | A deliberate timer or rate limit has not expired | Which policy intentionally inserted the delay? |
| BufferPin | A buffer cannot move while another backend pins it | Which cursor or scan is holding the pin? |
The generic extension wait-event mechanism is documented separately; extension-defined names are intentionally outside this catalogue.
Evidence contract
Every finished event page carries four different kinds of statement:
- Fact — identity, version presence, and official description.
- Analysis — the source path that reports the wait and what that path is doing.
- Advice — a workload-aware normal/trouble boundary and scenario-specific action.
- Evidence — executable SQL plus source
file:line, tied to an exact PostgreSQL release.
Use the version matrix when an event appears on one major version but not another.
1 - Wait-event triage map
The map is deliberately conservative: preserve evidence first, separate expected idleness from stalled work, and only then choose a class-specific drill-down.
flowchart TD
A[Capture pg_stat_activity] --> B{wait_event is null?}
B -- yes --> C[The backend is on CPU or between instrumentation points]
B -- no --> D{Activity or Client?}
D -- yes --> E{Idle state or expected background loop?}
E -- yes --> F[Usually normal; check open transactions and connection volume]
E -- no --> G[Check client backpressure, network, and application ownership]
D -- no --> H{Lock or BufferPin?}
H -- yes --> I[Build the blocking chain and identify the root holder]
H -- no --> J{IO?}
J -- yes --> K[Correlate with pg_stat_io, filesystem latency, and workload phase]
J -- no --> L{LWLock?}
L -- yes --> M[Repeat snapshots; identify one hot internal resource]
L -- no --> N[Inspect IPC peer or Timeout policy]
I --> O[Choose the least disruptive bounded action]
K --> O
M --> O
N --> OMinimum evidence bundle
- Two or more snapshots with timestamps.
pid,backend_type,state, query age, transaction age, event type and name.pg_blocking_pids(pid)for every waiting backend.- The exact PostgreSQL major/minor version.
- A workload marker: deploy, batch, checkpoint, vacuum, backup, DDL, or failover.
Do not terminate a backend merely because its wait is frequent. Activity, many Client, and timer waits can dominate a healthy cluster by design.
2 - Version matrix
The matrix reconciles two factual paths: PostgreSQL 13–16 monitoring tables and live pg_wait_events rows from PostgreSQL 17–18 Docker instances.
| Version | Extraction authority | Rows |
|---|---|---|
| 13 | Official monitoring documentation | 222 |
| 14 | Official monitoring documentation | 231 |
| 15 | Official monitoring documentation | 238 |
| 16 | Official monitoring documentation | 246 |
| 17 | Docker postgres:17, queried from pg_wait_events |
265 |
| 18 | Docker postgres:18, queried from pg_wait_events |
274 |
The union contains 327 exact (type, name) identities. Forty-five historical identities resolve into 282 semantic dossiers: 281 core event entries plus one Extension mechanism placeholder. The mappings cover two type moves in PG14, two reviewed Parallel Hash renames in PG16, and PostgreSQL’s PG17 wait-name spelling normalization.
Downloads
- Complete CSV matrix
- Structured JSON matrix
- Inventory manifest with per-type counts and source hashes
- Enriched catalogue JSONL
The CSV deliberately preserves old and new names as separate rows and provides a canonical column. Event pages consolidate those rows through explicit aliases without erasing their real version ranges.
Rename policy
Names are linked only when the evidence is deterministic: the adjacent replacement is alphanumerically identical after case normalization, or the source/documentation establishes the reviewed rename. Similar descriptions alone are not enough; removals such as PgStatMain remain historical events rather than speculative aliases.
Complete identity matrix
| Type | Event identity | 13 | 14 | 15 | 16 | 17 | 18 | Canonical / change |
|---|---|---|---|---|---|---|---|---|
| Activity | ArchiverMain |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Activity | AutoVacuumMain |
✓ | ✓ | ✓ | ✓ | Activity/AutovacuumMain · spelling |
||
| Activity | AutovacuumMain |
✓ | ✓ | — | ||||
| Activity | BgWriterHibernate |
✓ | ✓ | ✓ | ✓ | Activity/BgwriterHibernate · spelling |
||
| Activity | BgWriterMain |
✓ | ✓ | ✓ | ✓ | Activity/BgwriterMain · spelling |
||
| Activity | BgwriterHibernate |
✓ | ✓ | — | ||||
| Activity | BgwriterMain |
✓ | ✓ | — | ||||
| Activity | CheckpointerMain |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Activity | CheckpointerShutdown |
✓ | — | |||||
| Activity | IoWorkerMain |
✓ | — | |||||
| Activity | LogicalApplyMain |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Activity | LogicalLauncherMain |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Activity | LogicalParallelApplyMain |
✓ | ✓ | ✓ | — | |||
| Activity | PgStatMain |
✓ | ✓ | — | ||||
| Activity | RecoveryWalStream |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Activity | ReplicationSlotsyncMain |
✓ | ✓ | — | ||||
| Activity | ReplicationSlotsyncShutdown |
✓ | ✓ | — | ||||
| Activity | SysLoggerMain |
✓ | ✓ | ✓ | ✓ | Activity/SysloggerMain · spelling |
||
| Activity | SysloggerMain |
✓ | ✓ | — | ||||
| Activity | WalReceiverMain |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Activity | WalSenderMain |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Activity | WalSummarizerWal |
✓ | ✓ | — | ||||
| Activity | WalWriterMain |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| BufferPin | BufferPin |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Client | ClientRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Client | ClientWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Client | GSSOpenServer |
✓ | ✓ | ✓ | ✓ | Client/GssOpenServer · spelling |
||
| Client | GssOpenServer |
✓ | ✓ | — | ||||
| Client | LibPQWalReceiverConnect |
✓ | ✓ | ✓ | ✓ | Client/LibpqwalreceiverConnect · spelling |
||
| Client | LibPQWalReceiverReceive |
✓ | ✓ | ✓ | ✓ | Client/LibpqwalreceiverReceive · spelling |
||
| Client | LibpqwalreceiverConnect |
✓ | ✓ | — | ||||
| Client | LibpqwalreceiverReceive |
✓ | ✓ | — | ||||
| Client | SSLOpenServer |
✓ | ✓ | ✓ | ✓ | Client/SslOpenServer · spelling |
||
| Client | SslOpenServer |
✓ | ✓ | — | ||||
| Client | WaitForStandbyConfirmation |
✓ | ✓ | — | ||||
| Client | WalReceiverWaitStart |
✓ | IPC/WalReceiverWaitStart · type_move |
|||||
| Client | WalSenderWaitForWAL |
✓ | ✓ | ✓ | ✓ | Client/WalSenderWaitForWal · spelling |
||
| Client | WalSenderWaitForWal |
✓ | ✓ | — | ||||
| Client | WalSenderWriteData |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Extension | Extension |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | AioIoCompletion |
✓ | — | |||||
| IO | AioIoUringExecution |
✓ | — | |||||
| IO | AioIoUringSubmit |
✓ | — | |||||
| IO | BaseBackupRead |
✓ | ✓ | ✓ | IO/BasebackupRead · spelling |
|||
| IO | BaseBackupSync |
✓ | ✓ | IO/BasebackupSync · spelling |
||||
| IO | BaseBackupWrite |
✓ | ✓ | IO/BasebackupWrite · spelling |
||||
| IO | BasebackupRead |
✓ | ✓ | — | ||||
| IO | BasebackupSync |
✓ | ✓ | — | ||||
| IO | BasebackupWrite |
✓ | ✓ | — | ||||
| IO | BufFileRead |
✓ | ✓ | ✓ | ✓ | IO/BuffileRead · spelling |
||
| IO | BufFileTruncate |
✓ | ✓ | ✓ | IO/BuffileTruncate · spelling |
|||
| IO | BufFileWrite |
✓ | ✓ | ✓ | ✓ | IO/BuffileWrite · spelling |
||
| IO | BuffileRead |
✓ | ✓ | — | ||||
| IO | BuffileTruncate |
✓ | ✓ | — | ||||
| IO | BuffileWrite |
✓ | ✓ | — | ||||
| IO | ControlFileRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ControlFileSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ControlFileSyncUpdate |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ControlFileWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ControlFileWriteUpdate |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | CopyFileCopy |
✓ | — | |||||
| IO | CopyFileRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | CopyFileWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DSMAllocate |
✓ | IO/DsmAllocate · spelling |
|||||
| IO | DSMFillZeroWrite |
✓ | ✓ | ✓ | ✓ | IO/DsmFillZeroWrite · spelling |
||
| IO | DataFileExtend |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DataFileFlush |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DataFileImmediateSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DataFilePrefetch |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DataFileRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DataFileSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DataFileTruncate |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DataFileWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | DsmAllocate |
✓ | ✓ | — | ||||
| IO | DsmFillZeroWrite |
✓ | ✓ | — | ||||
| IO | LockFileAddToDataDirRead |
✓ | ✓ | ✓ | ✓ | IO/LockFileAddtodatadirRead · spelling |
||
| IO | LockFileAddToDataDirSync |
✓ | ✓ | ✓ | ✓ | IO/LockFileAddtodatadirSync · spelling |
||
| IO | LockFileAddToDataDirWrite |
✓ | ✓ | ✓ | ✓ | IO/LockFileAddtodatadirWrite · spelling |
||
| IO | LockFileAddtodatadirRead |
✓ | ✓ | — | ||||
| IO | LockFileAddtodatadirSync |
✓ | ✓ | — | ||||
| IO | LockFileAddtodatadirWrite |
✓ | ✓ | — | ||||
| IO | LockFileCreateRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LockFileCreateSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LockFileCreateWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LockFileReCheckDataDirRead |
✓ | ✓ | ✓ | ✓ | IO/LockFileRecheckdatadirRead · spelling |
||
| IO | LockFileRecheckdatadirRead |
✓ | ✓ | — | ||||
| IO | LogicalChangesRead |
✓ | — | |||||
| IO | LogicalChangesWrite |
✓ | — | |||||
| IO | LogicalRewriteCheckpointSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LogicalRewriteMappingSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LogicalRewriteMappingWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LogicalRewriteSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LogicalRewriteTruncate |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LogicalRewriteWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | LogicalSubxactRead |
✓ | — | |||||
| IO | LogicalSubxactWrite |
✓ | — | |||||
| IO | RelationMapRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | RelationMapReplace |
✓ | ✓ | ✓ | — | |||
| IO | RelationMapSync |
✓ | ✓ | ✓ | — | |||
| IO | RelationMapWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ReorderBufferRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ReorderBufferWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ReorderLogicalMappingRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ReplicationSlotRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ReplicationSlotRestoreSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ReplicationSlotSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | ReplicationSlotWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | SLRUFlushSync |
✓ | ✓ | ✓ | ✓ | IO/SlruFlushSync · spelling |
||
| IO | SLRURead |
✓ | ✓ | ✓ | ✓ | IO/SlruRead · spelling |
||
| IO | SLRUSync |
✓ | ✓ | ✓ | ✓ | IO/SlruSync · spelling |
||
| IO | SLRUWrite |
✓ | ✓ | ✓ | ✓ | IO/SlruWrite · spelling |
||
| IO | SlruFlushSync |
✓ | ✓ | — | ||||
| IO | SlruRead |
✓ | ✓ | — | ||||
| IO | SlruSync |
✓ | ✓ | — | ||||
| IO | SlruWrite |
✓ | ✓ | — | ||||
| IO | SnapbuildRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | SnapbuildSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | SnapbuildWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | TimelineHistoryFileSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | TimelineHistoryFileWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | TimelineHistoryRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | TimelineHistorySync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | TimelineHistoryWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | TwophaseFileRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | TwophaseFileSync |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | TwophaseFileWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IO | VersionFileSync |
✓ | ✓ | ✓ | ✓ | — | ||
| IO | VersionFileWrite |
✓ | ✓ | ✓ | ✓ | — | ||
| IO | WALBootstrapSync |
✓ | ✓ | ✓ | ✓ | IO/WalBootstrapSync · spelling |
||
| IO | WALBootstrapWrite |
✓ | ✓ | ✓ | ✓ | IO/WalBootstrapWrite · spelling |
||
| IO | WALCopyRead |
✓ | ✓ | ✓ | ✓ | IO/WalCopyRead · spelling |
||
| IO | WALCopySync |
✓ | ✓ | ✓ | ✓ | IO/WalCopySync · spelling |
||
| IO | WALCopyWrite |
✓ | ✓ | ✓ | ✓ | IO/WalCopyWrite · spelling |
||
| IO | WALInitSync |
✓ | ✓ | ✓ | ✓ | IO/WalInitSync · spelling |
||
| IO | WALInitWrite |
✓ | ✓ | ✓ | ✓ | IO/WalInitWrite · spelling |
||
| IO | WALRead |
✓ | ✓ | ✓ | ✓ | IO/WalRead · spelling |
||
| IO | WALSenderTimelineHistoryRead |
✓ | ✓ | ✓ | ✓ | IO/WalsenderTimelineHistoryRead · spelling |
||
| IO | WALSync |
✓ | ✓ | ✓ | ✓ | IO/WalSync · spelling |
||
| IO | WALSyncMethodAssign |
✓ | ✓ | ✓ | ✓ | IO/WalSyncMethodAssign · spelling |
||
| IO | WALWrite |
✓ | ✓ | ✓ | ✓ | IO/WalWrite · spelling |
||
| IO | WalBootstrapSync |
✓ | ✓ | — | ||||
| IO | WalBootstrapWrite |
✓ | ✓ | — | ||||
| IO | WalCopyRead |
✓ | ✓ | — | ||||
| IO | WalCopySync |
✓ | ✓ | — | ||||
| IO | WalCopyWrite |
✓ | ✓ | — | ||||
| IO | WalInitSync |
✓ | ✓ | — | ||||
| IO | WalInitWrite |
✓ | ✓ | — | ||||
| IO | WalRead |
✓ | ✓ | — | ||||
| IO | WalSummaryRead |
✓ | ✓ | — | ||||
| IO | WalSummaryWrite |
✓ | ✓ | — | ||||
| IO | WalSync |
✓ | ✓ | — | ||||
| IO | WalSyncMethodAssign |
✓ | ✓ | — | ||||
| IO | WalWrite |
✓ | ✓ | — | ||||
| IO | WalsenderTimelineHistoryRead |
✓ | ✓ | — | ||||
| IPC | AppendReady |
✓ | ✓ | ✓ | ✓ | ✓ | — | |
| IPC | ArchiveCleanupCommand |
✓ | ✓ | ✓ | ✓ | — | ||
| IPC | ArchiveCommand |
✓ | ✓ | ✓ | ✓ | — | ||
| IPC | BackendTermination |
✓ | ✓ | ✓ | ✓ | ✓ | — | |
| IPC | BackupWaitWalArchive |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | BgWorkerShutdown |
✓ | ✓ | ✓ | ✓ | IPC/BgworkerShutdown · spelling |
||
| IPC | BgWorkerStartup |
✓ | ✓ | ✓ | ✓ | IPC/BgworkerStartup · spelling |
||
| IPC | BgworkerShutdown |
✓ | ✓ | — | ||||
| IPC | BgworkerStartup |
✓ | ✓ | — | ||||
| IPC | BtreePage |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | BufferIO |
✓ | ✓ | ✓ | IPC/BufferIo · spelling |
|||
| IPC | BufferIo |
✓ | ✓ | — | ||||
| IPC | CheckpointDelayComplete |
✓ | ✓ | — | ||||
| IPC | CheckpointDelayStart |
✓ | ✓ | — | ||||
| IPC | CheckpointDone |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | CheckpointStart |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | ExecuteGather |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashBatchAllocate |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashBatchElect |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashBatchLoad |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashBuildAllocate |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashBuildElect |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashBuildHashInner |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashBuildHashOuter |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashGrowBatchesAllocate |
✓ | ✓ | ✓ | IPC/HashGrowBatchesReallocate · rename |
|||
| IPC | HashGrowBatchesDecide |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashGrowBatchesElect |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashGrowBatchesFinish |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashGrowBatchesReallocate |
✓ | ✓ | ✓ | — | |||
| IPC | HashGrowBatchesRepartition |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashGrowBucketsAllocate |
✓ | ✓ | ✓ | IPC/HashGrowBucketsReallocate · rename |
|||
| IPC | HashGrowBucketsElect |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | HashGrowBucketsReallocate |
✓ | ✓ | ✓ | — | |||
| IPC | HashGrowBucketsReinsert |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | LogicalApplySendData |
✓ | ✓ | ✓ | — | |||
| IPC | LogicalParallelApplyStateChange |
✓ | ✓ | ✓ | — | |||
| IPC | LogicalSyncData |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | LogicalSyncStateChange |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | MessageQueueInternal |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | MessageQueuePutMessage |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | MessageQueueReceive |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | MessageQueueSend |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | MultixactCreation |
✓ | ✓ | — | ||||
| IPC | ParallelBitmapScan |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | ParallelCreateIndexScan |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | ParallelFinish |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | ProcArrayGroupUpdate |
✓ | ✓ | ✓ | ✓ | IPC/ProcarrayGroupUpdate · spelling |
||
| IPC | ProcSignalBarrier |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | ProcarrayGroupUpdate |
✓ | ✓ | — | ||||
| IPC | Promote |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | RecoveryConflictSnapshot |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | RecoveryConflictTablespace |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | RecoveryEndCommand |
✓ | ✓ | ✓ | ✓ | — | ||
| IPC | RecoveryPause |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | ReplicationOriginDrop |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | ReplicationSlotDrop |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | RestoreCommand |
✓ | ✓ | ✓ | ✓ | — | ||
| IPC | SafeSnapshot |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | SyncRep |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| IPC | WalReceiverExit |
✓ | ✓ | ✓ | ✓ | ✓ | — | |
| IPC | WalReceiverUpstreamCatchup |
✓ | ✓ | — | ||||
| IPC | WalReceiverWaitStart |
✓ | ✓ | ✓ | ✓ | ✓ | — | |
| IPC | WalSummaryReady |
✓ | ✓ | — | ||||
| IPC | XactGroupUpdate |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | advisory |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | applytransaction |
✓ | ✓ | ✓ | — | |||
| Lock | extend |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | frozenid |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | object |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | page |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | relation |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | spectoken |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | transactionid |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | tuple |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | userlock |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Lock | virtualxid |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | AddinShmemInit |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | AioUringCompletion |
✓ | — | |||||
| LWLock | AioWorkerSubmissionQueue |
✓ | — | |||||
| LWLock | AutoFile |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | Autovacuum |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | AutovacuumSchedule |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | BackgroundWorker |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | BtreeVacuum |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | BufferContent |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | BufferIO |
✓ | IPC/BufferIo · type_move |
|||||
| LWLock | BufferMapping |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | Checkpoint |
✓ | — | |||||
| LWLock | CheckpointerComm |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | CommitTs |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | CommitTsBuffer |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | CommitTsSLRU |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ControlFile |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | DSMRegistry |
✓ | ✓ | — | ||||
| LWLock | DSMRegistryDSA |
✓ | ✓ | — | ||||
| LWLock | DSMRegistryHash |
✓ | ✓ | — | ||||
| LWLock | DynamicSharedMemoryControl |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | InjectionPoint |
✓ | ✓ | — | ||||
| LWLock | LockFastPath |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | LockManager |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | LogicalRepLauncherDSA |
✓ | ✓ | ✓ | — | |||
| LWLock | LogicalRepLauncherHash |
✓ | ✓ | ✓ | — | |||
| LWLock | LogicalRepWorker |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | MultiXactGen |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | MultiXactMemberBuffer |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | MultiXactMemberSLRU |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | MultiXactOffsetBuffer |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | MultiXactOffsetSLRU |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | MultiXactTruncation |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | NotifyBuffer |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | NotifyQueue |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | NotifyQueueTail |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | NotifySLRU |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | OidGen |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | OldSnapshotTimeMap |
✓ | ✓ | ✓ | ✓ | — | ||
| LWLock | ParallelAppend |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ParallelBtreeScan |
✓ | — | |||||
| LWLock | ParallelHashJoin |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ParallelQueryDSA |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ParallelVacuumDSA |
✓ | ✓ | — | ||||
| LWLock | PerSessionDSA |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | PerSessionRecordType |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | PerSessionRecordTypmod |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | PerXactPredicateList |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | PgStatsDSA |
✓ | ✓ | ✓ | ✓ | — | ||
| LWLock | PgStatsData |
✓ | ✓ | ✓ | ✓ | — | ||
| LWLock | PgStatsHash |
✓ | ✓ | ✓ | ✓ | — | ||
| LWLock | PredicateLockManager |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ProcArray |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | RelCacheInit |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | RelationMapping |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ReplicationOrigin |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ReplicationOriginState |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ReplicationSlotAllocation |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ReplicationSlotControl |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ReplicationSlotIO |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SInvalRead |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SInvalWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SerialBuffer |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SerialControl |
✓ | ✓ | — | ||||
| LWLock | SerialSLRU |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SerializableFinishedList |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SerializablePredicateList |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SerializableXactHash |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SharedTidBitmap |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SharedTupleStore |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | ShmemIndex |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SubtransBuffer |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SubtransSLRU |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SyncRep |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | SyncScan |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | TablespaceCreate |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | TwoPhaseState |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | WALBufMapping |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | WALInsert |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | WALSummarizer |
✓ | ✓ | — | ||||
| LWLock | WALWrite |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | WaitEventCustom |
✓ | ✓ | — | ||||
| LWLock | WrapLimitsVacuum |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | XactBuffer |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | XactSLRU |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | XactTruncation |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| LWLock | XidGen |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Timeout | BaseBackupThrottle |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Timeout | CheckpointWriteDelay |
✓ | ✓ | ✓ | ✓ | ✓ | — | |
| Timeout | PgSleep |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Timeout | RecoveryApplyDelay |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Timeout | RecoveryRetrieveRetryInterval |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Timeout | RegisterSyncRequest |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Timeout | SpinDelay |
✓ | ✓ | ✓ | — | |||
| Timeout | VacuumDelay |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| Timeout | VacuumTruncate |
✓ | ✓ | ✓ | ✓ | — | ||
| Timeout | WalSummarizerError |
✓ | ✓ | — |
3 - Operator glossary
| Term | Meaning in this atlas |
|---|---|
| Active foreground session | A client-facing backend with state = 'active'; background main loops are excluded from contention percentages. |
| Snapshot share | The fraction of sampled active foreground sessions on one event. It is a triage signal, not elapsed-time attribution. |
| Wait identity | Exact (wait_event_type, wait_event) spelling observed in a release. Renames remain separate matrix rows. |
| Canonical event | One semantic dossier that can consolidate explicitly verified historical spellings or type moves. |
| Trigger | The source path that passes a wait-event identifier to PostgreSQL’s wait reporting machinery. |
| Catalog definition | A source row that defines the public name/description. It is not automatically proof of a live trigger. |
| Dormant event | A catalog identity with verified negative source evidence: no live core reporter in the audited patch release. |
| Heavyweight lock | SQL-visible lock-manager object, normally diagnosable through pg_locks and pg_blocking_pids(). |
| LWLock / tranche | Short internal lock protecting shared-memory state; the tranche supplies the displayed event name. |
| SLRU | Small shared cache and on-disk segment set for transaction-related metadata such as pg_xact and multixact. |
| Buffer pin | A backend’s temporary claim that a shared buffer page must remain present and structurally stable. |
| Source release | Exact audited tag, such as REL_18_6; line numbers are never attached to a drifting stable branch. |
Advice thresholds in this site are operational defaults. PostgreSQL does not promise that “10%” or “five seconds” is universally bad; use the cluster’s own baseline and service objectives.
4 - Lock waits
Lock is the most directly actionable class: a backend asked the lock manager for a heavyweight lock and an incompatible holder has not released it. Unlike LWLocks, these waits usually have rows in pg_locks and a useful result from pg_blocking_pids().
Read the blocking graph, not the victim count
Twenty waiters can all be symptoms of one idle transaction. Start at the head of the graph, then decide whether the holder is doing useful work, abandoned, or participating in an expected DDL/deploy window.
- Normal: sub-second lock handoff during ordinary writes or planned DDL.
- Watch: any user-facing waiter persists beyond its latency objective, or at least 10% of active sessions wait on the same root blocker.
- Urgent: the root holder is
idle in transaction, the chain keeps growing, critical DDL blocks traffic, or deadlocks begin to rise.
Events to recognize
| Event | Usually means |
|---|---|
| relation | Table/index-level lock conflict, often DDL versus DML |
| transactionid | Waiting for another transaction’s outcome, commonly row updates |
| tuple | Competing tuple locks or a long row-lock queue |
| extend | Sessions serialize while extending one relation |
| virtualxid | DDL waits for transactions that might still use an object |
| advisory | Application-defined advisory-lock coordination |
Blocker query
Common misreads
- A session listed as a blocker is not automatically safe to terminate; it may be the only writer preserving an invariant.
transactioniddoes not mean transaction-ID exhaustion.relationdoes not identify the relation by itself; joinpg_locks.relationtopg_class.- Increasing
lock_timeoutchanges how long victims wait; it does not remove the blocker.
4.1 - Lock: advisory
advisory
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to acquire an advisory user lock
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:428. The instrumented operation is: Waiting to acquire an advisory user lock. The lock manager could not grant the advisory heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:428 —
advisory - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:39 —
advisory
Related controls and signals
4.2 - Lock: applytransaction
applytransaction
VersionsPG 16-18
Evidence3 source location(s)
Official description
Waiting to acquire a lock on a remote transaction being applied by a logical replication subscriber
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:429. The instrumented operation is: Waiting to acquire a lock on a remote transaction being applied by a logical replication subscriber. The lock manager could not grant the applytransaction heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:429 —
applytransaction - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:40 —
applytransaction
Related controls and signals
4.3 - Lock: extend
extend
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to extend a relation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:419. The instrumented operation is: Waiting to extend a relation. The lock manager could not grant the extend heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:419 —
extend - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:30 —
extend
Related controls and signals
4.4 - Lock: frozenid
frozenid
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to update pg_database.datfrozenxid and pg_database.datminmxid
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:420. The instrumented operation is: Waiting to update pg_database.datfrozenxid and pg_database.datminmxid. The lock manager could not grant the frozenid heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:420 —
frozenid - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:31 —
frozenid
Related controls and signals
4.5 - Lock: object
object
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to acquire a lock on a non-relation database object
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:426. The instrumented operation is: Waiting to acquire a lock on a non-relation database object. The lock manager could not grant the object heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:426 —
object - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:37 —
object
Related controls and signals
4.6 - Lock: page
page
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to acquire a lock on a page of a relation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:421. The instrumented operation is: Waiting to acquire a lock on a page of a relation. The lock manager could not grant the page heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:421 —
page
Related controls and signals
4.7 - Lock: relation
relation
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to acquire a lock on a relation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:418. The instrumented operation is: Waiting to acquire a lock on a relation. The lock manager could not grant the relation heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:418 —
relation - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:29 —
relation
Related controls and signals
4.8 - Lock: spectoken
spectoken
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to acquire a speculative insertion lock
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:425. The instrumented operation is: Waiting to acquire a speculative insertion lock. The lock manager could not grant the spectoken heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:425 —
spectoken - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:36 —
spectoken
Related controls and signals
4.9 - Lock: transactionid
transactionid
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for a transaction to finish
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:423. The instrumented operation is: Waiting for a transaction to finish. The lock manager could not grant the transactionid heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:423 —
transactionid - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:34 —
transactionid
Related controls and signals
4.10 - Lock: tuple
tuple
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to acquire a lock on a tuple
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:422. The instrumented operation is: Waiting to acquire a lock on a tuple. The lock manager could not grant the tuple heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:422 —
tuple - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:33 —
tuple
Related controls and signals
4.11 - Lock: userlock
userlock
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to acquire a user lock
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:427. The instrumented operation is: Waiting to acquire a user lock. The lock manager could not grant the userlock heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:427 —
userlock - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:38 —
userlock
Related controls and signals
4.12 - Lock: virtualxid
virtualxid
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to acquire a virtual transaction ID lock
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
PG_WAIT_LOCK at src/backend/storage/lmgr/proc.c:1487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:424. The instrumented operation is: Waiting to acquire a virtual transaction ID lock. The lock manager could not grant the virtualxid heavyweight lock immediately. ProcSleep reports the lock wait and parks the backend on the lock’s wait queue until owners release or the request is cancelled.
Normal or trouble?
- Normal: Sub-second handoff during ordinary writes or planned DDL can be normal.
- Investigate: Investigate once a user-facing wait breaches its latency objective, a blocking chain grows, or the root holder is idle in transaction.
Diagnostic SQL
Response
- Build the pg_blocking_pids graph to its root.
- Inspect the root holder’s state, transaction age, and business purpose.
- Choose cancellation, timeout, or workload sequencing only after identifying the safest root action.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/proc.c:1487 —
PG_WAIT_LOCK - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:424 —
virtualxid - PostgreSQL 18.6 · src/backend/utils/adt/lockfuncs.c:35 —
virtualxid
Related controls and signals
5 - LWLock waits
LWLock means a backend could not immediately acquire a lightweight lock that protects an internal shared-memory structure. It does not identify a SQL row or table lock, and pg_locks usually cannot name its owner.
repeat samples → isolate one hot tranche → correlate with workloadHow to read this class
A single sample is ordinary scheduler noise. Treat the event as contention only when the same LWLock name recurs across consecutive samples and affects foreground sessions whose latency has increased.
- Normal: brief appearances during WAL generation, snapshot acquisition, buffer lookup, vacuum, or checkpoint work.
- Watch: the same event occupies at least 10% of active foreground backends in three consecutive 1-second snapshots.
- Urgent: at least 25% of active foreground backends pile onto one event, waits persist beyond 5 seconds, or throughput collapses at the same time.
The percentages are operational triage thresholds, not PostgreSQL guarantees. Compare with the cluster’s own baseline and exclude background processes whose main loop is expected to wait.
Ten events worth recognizing
| Event | Protected resource | Typical story |
|---|---|---|
| BufferContent | Contents of one shared buffer | Many sessions touch the same hot page |
| BufferMapping | Buffer-table mapping partitions | Working-set churn or broad concurrent scans |
| LockManager | Heavyweight lock manager state | Large lock fan-out, DDL, or lock storms |
| ProcArray | Shared process/transaction array | Snapshot and transaction-ID pressure |
| WALBufMapping | WAL buffer page mapping | WAL buffers turn over under write pressure |
| WALInsert | WAL insertion state | Many writers serialize while inserting WAL |
| WALWrite | WAL buffer write coordination | WAL flush/write path cannot keep up |
| XactSLRU | Transaction-status SLRU | pg_xact cache churn or old visibility checks |
| MultiXactMemberSLRU | Multixact-member SLRU | Heavy row-locking and multixact churn |
| SyncRep | Synchronous replication wait queues | Commit acknowledgements and sender state contend |
Common misreads
- “LWLock means a leaked lock.” No. It is a short internal critical section; sustained recurrence is the signal.
- “The query shown owns the lock.”
pg_stat_activity.querybelongs to the waiter. The holder can be another backend inside a different source path. - “More CPU fixes it.” Extra concurrency can intensify a shared-memory hotspot. First identify the protected resource and workload shape.
- “
pg_lockswill reveal the blocker.” It covers heavyweight and predicate locks, not general LWLock ownership.
Start with BufferContent for a page-level hotspot and WALInsert for a write-heavy cluster.
5.1 - LWLock: AddinShmemInit
AddinShmemInit
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to manage an extension’s space allocation in shared memory
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:328. The instrumented operation is: Waiting to manage an extension’s space allocation in shared memory. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as AddinShmemInit. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:328 —
AddinShmemInit - PostgreSQL 18.6 · src/test/modules/injection_points/injection_points.c:136 —
AddinShmemInit
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.2 - LWLock: AioUringCompletion
AioUringCompletion
VersionsPG 18
Evidence3 source location(s)
Official description
Waiting for another process to complete IO via io_uring
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:180. The instrumented operation is: Waiting for another process to complete IO via io_uring. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as AioUringCompletion. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:180 —
AioUringCompletion - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:405 —
AioUringCompletion
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.3 - LWLock: AioWorkerSubmissionQueue
AioWorkerSubmissionQueue
VersionsPG 18
Evidence3 source location(s)
Official description
Waiting to access AIO worker submission queue
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/aio/method_worker.c:253. The instrumented operation is: Waiting to access AIO worker submission queue. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as AioWorkerSubmissionQueue. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/aio/method_worker.c:253 —
AioWorkerSubmissionQueue - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:355 —
AioWorkerSubmissionQueue
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.4 - LWLock: AutoFile
AutoFile
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to update the postgresql.auto.conf file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:340. The instrumented operation is: Waiting to update the postgresql.auto.conf file. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as AutoFile. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:340 —
AutoFile - PostgreSQL 18.6 · src/backend/utils/misc/guc.c:4760 —
AutoFile
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.5 - LWLock: Autovacuum
Autovacuum
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update the current state of autovacuum workers
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/postmaster/autovacuum.c:611. The instrumented operation is: Waiting to read or update the current state of autovacuum workers. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as Autovacuum. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/autovacuum.c:611 —
Autovacuum - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:329 —
Autovacuum
Related controls and signals
5.6 - LWLock: AutovacuumSchedule
AutovacuumSchedule
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to ensure that a table selected for autovacuum still needs vacuuming
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/postmaster/autovacuum.c:2337. The instrumented operation is: Waiting to ensure that a table selected for autovacuum still needs vacuuming. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as AutovacuumSchedule. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/autovacuum.c:2337 —
AutovacuumSchedule - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:330 —
AutovacuumSchedule
Related controls and signals
5.7 - LWLock: BackgroundWorker
BackgroundWorker
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update background worker state
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/postmaster/bgworker.c:1070. The instrumented operation is: Waiting to read or update background worker state. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as BackgroundWorker. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/bgworker.c:1070 —
BackgroundWorker - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:338 —
BackgroundWorker
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.8 - LWLock: BtreeVacuum
BtreeVacuum
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update vacuum-related information for a B-tree index
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/nbtree/nbtutils.c:3519. The instrumented operation is: Waiting to read or update vacuum-related information for a B-tree index. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as BtreeVacuum. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/nbtree/nbtutils.c:3519 —
BtreeVacuum - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:327 —
BtreeVacuum
Related controls and signals
5.9 - LWLock: BufferContent
BufferContent
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access a data page in memory
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
A backend has found the shared buffer it needs but cannot yet take that buffer descriptor’s content lock. Heap and index code acquire this lock before reading or changing the in-memory page, so many workers touching one page can serialize here.
Normal or trouble?
- Normal: Short samples are routine while concurrent readers and writers touch shared pages.
- Investigate: Repeated samples on many foreground sessions usually point to a hot heap/index page, a right-growing index, or concurrent maintenance on the same blocks.
Diagnostic SQL
Response
- Find the relations and statements shared by the waiters.
- Use page/index evidence to confirm a hotspot; do not infer one from the wait name alone.
- Spread hot keys, batch writes, or move maintenance away from the peak before considering capacity changes.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:148 —
BufferContent - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:373 —
BufferContent
Related controls and signals
- GUCs: [guc:shared_buffers]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:statement_latency]
Typical incident pattern
A monotonically increasing key concentrates concurrent B-tree inserts on the rightmost leaf page; BufferContent rises with insert latency.
5.10 - LWLock: BufferMapping
BufferMapping
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to associate a data block with a buffer in the buffer pool
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
The buffer manager hashes a relation/fork/block tag into a partition protected by BufferMappingLock. Lookup, insertion, eviction, and tag reassignment briefly take that partition lock; broad concurrent misses or buffer churn increase collisions.
Normal or trouble?
- Normal: Brief waits occur when pages enter or leave shared buffers.
- Investigate: Sustained recurrence suggests a working set that churns through shared buffers, many parallel scans, or concentrated access mapping into a few partitions.
Diagnostic SQL
Response
- Correlate with buffer hit ratio and read volume by database and statement.
- Look for a new scan, undersized cache, or concurrency jump.
- Reduce concurrent scan fan-out or fix the access path before simply enlarging shared_buffers.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:152 —
BufferMapping - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:377 —
BufferMapping
Related controls and signals
- GUCs: [guc:shared_buffers] · [guc:max_parallel_workers_per_gather]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:buffer_hit_ratio] · [metric:blocks_read]
Typical incident pattern
A plan regression launches many concurrent large scans; buffer-table partitions become hot while useful pages churn out of cache.
5.11 - LWLock: Checkpoint
Checkpoint
VersionsPG 13
Evidence3 source location(s)
Official description
Waiting to begin a checkpoint.
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | — | — | — | — | — |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:765 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/xlog.c:8957. The instrumented operation is: Waiting to begin a checkpoint. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as Checkpoint. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 13.23 · src/backend/access/transam/xlog.c:8957 —
Checkpoint - PostgreSQL 13.23 · src/backend/storage/lmgr/lwlock.c:765 —
pgstat_report_wait_start - PostgreSQL 13.23 · src/backend/storage/lmgr/lwlocknames.c:14 —
Checkpoint
Related controls and signals
5.12 - LWLock: CheckpointerComm
CheckpointerComm
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to manage fsync requests
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/postmaster/checkpointer.c:1164. The instrumented operation is: Waiting to manage fsync requests. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as CheckpointerComm. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/checkpointer.c:1164 —
CheckpointerComm - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:324 —
CheckpointerComm
Related controls and signals
5.13 - LWLock: CommitTs
CommitTs
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update the last value set for a transaction commit timestamp
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/commit_ts.c:206. The instrumented operation is: Waiting to read or update the last value set for a transaction commit timestamp. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as CommitTs. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/commit_ts.c:206 —
CommitTs - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:343 —
CommitTs
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.14 - LWLock: CommitTsBuffer
CommitTsBuffer
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for I/O on a commit timestamp SLRU buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:141. The instrumented operation is: Waiting for I/O on a commit timestamp SLRU buffer. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as CommitTsBuffer. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:141 —
CommitTsBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:366 —
CommitTsBuffer
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.15 - LWLock: CommitTsSLRU
CommitTsSLRU
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the commit timestamp SLRU cache
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:172. The instrumented operation is: Waiting to access the commit timestamp SLRU cache. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as CommitTsSLRU. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:172 —
CommitTsSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:397 —
CommitTsSLRU
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.16 - LWLock: ControlFile
ControlFile
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update the pg_control file or create a new WAL file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/xlog.c:2723. The instrumented operation is: Waiting to read or update the pg_control file or create a new WAL file. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ControlFile. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:2723 —
ControlFile - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:321 —
ControlFile
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.17 - LWLock: DSMRegistry
DSMRegistry
VersionsPG 17-18
Evidence3 source location(s)
Official description
Waiting to read or update the dynamic shared memory registry
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/ipc/dsm_registry.c:98. The instrumented operation is: Waiting to read or update the dynamic shared memory registry. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as DSMRegistry. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/dsm_registry.c:98 —
DSMRegistry - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:352 —
DSMRegistry
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.18 - LWLock: DSMRegistryDSA
DSMRegistryDSA
VersionsPG 17-18
Evidence3 source location(s)
Official description
Waiting to access dynamic shared memory registry’s dynamic shared memory allocator
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:170. The instrumented operation is: Waiting to access dynamic shared memory registry’s dynamic shared memory allocator. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as DSMRegistryDSA. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:170 —
DSMRegistryDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:395 —
DSMRegistryDSA
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.19 - LWLock: DSMRegistryHash
DSMRegistryHash
VersionsPG 17-18
Evidence3 source location(s)
Official description
Waiting to access dynamic shared memory registry’s shared hash table
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:171. The instrumented operation is: Waiting to access dynamic shared memory registry’s shared hash table. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as DSMRegistryHash. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:171 —
DSMRegistryHash - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:396 —
DSMRegistryHash
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.20 - LWLock: DynamicSharedMemoryControl
DynamicSharedMemoryControl
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update dynamic shared memory allocation information
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/ipc/dsm.c:549. The instrumented operation is: Waiting to read or update dynamic shared memory allocation information. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as DynamicSharedMemoryControl. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/dsm.c:549 —
DynamicSharedMemoryControl - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:339 —
DynamicSharedMemoryControl
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.21 - LWLock: InjectionPoint
InjectionPoint
VersionsPG 17-18
Evidence3 source location(s)
Official description
Waiting to read or update information related to injection points
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:353. The instrumented operation is: Waiting to read or update information related to injection points. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as InjectionPoint. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:353 —
InjectionPoint - PostgreSQL 18.6 · src/backend/utils/misc/injection_point.c:302 —
InjectionPoint
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.22 - LWLock: LockFastPath
LockFastPath
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update a process’ fast-path lock information
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:151. The instrumented operation is: Waiting to read or update a process’ fast-path lock information. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as LockFastPath. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:151 —
LockFastPath - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:376 —
LockFastPath
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.23 - LWLock: LockManager
LockManager
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update information about “heavyweight” locks
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
Heavyweight lock bookkeeping is stored in shared hash tables partitioned by LockHashPartitionLock. Acquiring, granting, releasing, or inspecting many heavyweight locks can contend on the partition even when no SQL-level lock conflict exists.
Normal or trouble?
- Normal: Small bursts accompany ordinary relation and transaction lock traffic.
- Investigate: A sustained share often follows lock fan-out: very large transactions, many partitions, DDL churn, or thousands of waiting lock requests.
Diagnostic SQL
Response
- Count pg_locks rows per PID and inspect the blocking tree.
- Identify statements touching many relations or partitions.
- Shorten transactions and reduce lock fan-out; raise max_locks_per_transaction only for genuine capacity errors.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/ipci.c:117 —
LockManager - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:378 —
LockManager
Related controls and signals
- GUCs: [guc:max_locks_per_transaction] · [guc:max_connections]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:locks_per_backend] · [metric:blocked_sessions]
Typical incident pattern
A deployment runs DDL across thousands of partitions while application sessions acquire relation locks, creating internal lock-table contention before a clear blocker is visible.
5.24 - LWLock: LogicalRepLauncherDSA
LogicalRepLauncherDSA
VersionsPG 16-18
Evidence3 source location(s)
Official description
Waiting to access logical replication launcher’s dynamic shared memory allocator
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:168. The instrumented operation is: Waiting to access logical replication launcher’s dynamic shared memory allocator. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as LogicalRepLauncherDSA. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:168 —
LogicalRepLauncherDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:393 —
LogicalRepLauncherDSA
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.25 - LWLock: LogicalRepLauncherHash
LogicalRepLauncherHash
VersionsPG 16-18
Evidence3 source location(s)
Official description
Waiting to access logical replication launcher’s shared hash table
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:169. The instrumented operation is: Waiting to access logical replication launcher’s shared hash table. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as LogicalRepLauncherHash. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:169 —
LogicalRepLauncherHash - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:394 —
LogicalRepLauncherHash
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.26 - LWLock: LogicalRepWorker
LogicalRepWorker
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update the state of logical replication workers
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/replication/logical/launcher.c:189. The instrumented operation is: Waiting to read or update the state of logical replication workers. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as LogicalRepWorker. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/launcher.c:189 —
LogicalRepWorker - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:346 —
LogicalRepWorker
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.27 - LWLock: MultiXactGen
MultiXactGen
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update shared multixact state
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/multixact.c:738. The instrumented operation is: Waiting to read or update shared multixact state. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as MultiXactGen. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/multixact.c:738 —
MultiXactGen - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:322 —
MultiXactGen
Related controls and signals
5.28 - LWLock: MultiXactMemberBuffer
MultiXactMemberBuffer
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for I/O on a multixact member SLRU buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:144. The instrumented operation is: Waiting for I/O on a multixact member SLRU buffer. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as MultiXactMemberBuffer. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:144 —
MultiXactMemberBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:369 —
MultiXactMemberBuffer
Related controls and signals
5.29 - LWLock: MultiXactMemberSLRU
MultiXactMemberSLRU
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the multixact member SLRU cache
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
This lock protects the SLRU cache for pg_multixact/members, which stores the transaction members of multitransaction IDs used by shared row locks. Concurrent row-lock creation and old member lookups meet here.
Normal or trouble?
- Normal: Brief waits occur in workloads that use SELECT FOR SHARE/KEY SHARE or create multixacts through foreign-key checks.
- Investigate: Sustained contention points to heavy shared row locking, multixact churn, lagging freeze, or slow pg_multixact storage.
Diagnostic SQL
Response
- Find statements and tables creating many shared row locks.
- Check multixact age and autovacuum progress.
- Reduce lock fan-out and unblock multixact freeze; investigate member SLRU I/O if paired with buffer waits.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:174 —
MultiXactMemberSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:399 —
MultiXactMemberSLRU
Related controls and signals
- GUCs: [guc:autovacuum_multixact_freeze_max_age] · [guc:vacuum_multixact_freeze_table_age]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:oldest_multixact_age] · [metric:multixact_member_io]
Typical incident pattern
A high-fan-out foreign-key workload locks many parent rows while a long transaction delays multixact cleanup, driving member-cache contention.
5.30 - LWLock: MultiXactOffsetBuffer
MultiXactOffsetBuffer
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for I/O on a multixact offset SLRU buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:143. The instrumented operation is: Waiting for I/O on a multixact offset SLRU buffer. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as MultiXactOffsetBuffer. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:143 —
MultiXactOffsetBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:368 —
MultiXactOffsetBuffer
Related controls and signals
5.31 - LWLock: MultiXactOffsetSLRU
MultiXactOffsetSLRU
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the multixact offset SLRU cache
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:173. The instrumented operation is: Waiting to access the multixact offset SLRU cache. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as MultiXactOffsetSLRU. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:173 —
MultiXactOffsetSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:398 —
MultiXactOffsetSLRU
Related controls and signals
5.32 - LWLock: MultiXactTruncation
MultiXactTruncation
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or truncate multixact information
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/multixact.c:2901. The instrumented operation is: Waiting to read or truncate multixact information. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as MultiXactTruncation. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/multixact.c:2901 —
MultiXactTruncation - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:345 —
MultiXactTruncation
Related controls and signals
5.33 - LWLock: NotifyBuffer
NotifyBuffer
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for I/O on a NOTIFY message SLRU buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:145. The instrumented operation is: Waiting for I/O on a NOTIFY message SLRU buffer. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as NotifyBuffer. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:145 —
NotifyBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:370 —
NotifyBuffer
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.34 - LWLock: NotifyQueue
NotifyQueue
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update NOTIFY messages
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/commands/async.c:940. The instrumented operation is: Waiting to read or update NOTIFY messages. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as NotifyQueue. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/commands/async.c:940 —
NotifyQueue - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:333 —
NotifyQueue
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.35 - LWLock: NotifyQueueTail
NotifyQueueTail
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to update limit on NOTIFY message storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/commands/async.c:2126. The instrumented operation is: Waiting to update limit on NOTIFY message storage. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as NotifyQueueTail. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/commands/async.c:2126 —
NotifyQueueTail - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:349 —
NotifyQueueTail
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.36 - LWLock: NotifySLRU
NotifySLRU
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the NOTIFY message SLRU cache
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:175. The instrumented operation is: Waiting to access the NOTIFY message SLRU cache. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as NotifySLRU. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:175 —
NotifySLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:400 —
NotifySLRU
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.37 - LWLock: OidGen
OidGen
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to allocate a new OID
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/varsup.c:563. The instrumented operation is: Waiting to allocate a new OID. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as OidGen. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/varsup.c:563 —
OidGen - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:314 —
OidGen
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.38 - LWLock: OldSnapshotTimeMap
OldSnapshotTimeMap
VersionsPG 13-16
Evidence2 source location(s)
Official description
Waiting to read or update old snapshot control information.
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | — | — |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:750 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/time/snapmgr.c:1758. The instrumented operation is: Waiting to read or update old snapshot control information. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as OldSnapshotTimeMap. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 16.15 · src/backend/storage/lmgr/lwlock.c:750 —
pgstat_report_wait_start - PostgreSQL 16.15 · src/backend/utils/time/snapmgr.c:1758 —
OldSnapshotTimeMap
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.39 - LWLock: ParallelAppend
ParallelAppend
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to choose the next subplan during Parallel Append plan execution
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/executor/nodeAppend.c:69. The instrumented operation is: Waiting to choose the next subplan during Parallel Append plan execution. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ParallelAppend. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeAppend.c:69 —
ParallelAppend - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:388 —
ParallelAppend
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.40 - LWLock: ParallelBtreeScan
ParallelBtreeScan
VersionsPG 18
Evidence3 source location(s)
Official description
Waiting to synchronize workers during Parallel B-tree scan plan execution
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:156. The instrumented operation is: Waiting to synchronize workers during Parallel B-tree scan plan execution. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ParallelBtreeScan. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:156 —
ParallelBtreeScan - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:381 —
ParallelBtreeScan
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.41 - LWLock: ParallelHashJoin
ParallelHashJoin
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to synchronize workers during Parallel Hash Join plan execution
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/executor/nodeHash.c:71. The instrumented operation is: Waiting to synchronize workers during Parallel Hash Join plan execution. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ParallelHashJoin. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:71 —
ParallelHashJoin - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:380 —
ParallelHashJoin
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.42 - LWLock: ParallelQueryDSA
ParallelQueryDSA
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for parallel query dynamic shared memory allocation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:157. The instrumented operation is: Waiting for parallel query dynamic shared memory allocation. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ParallelQueryDSA. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:157 —
ParallelQueryDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:382 —
ParallelQueryDSA
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.43 - LWLock: ParallelVacuumDSA
ParallelVacuumDSA
VersionsPG 17-18
Evidence3 source location(s)
Official description
Waiting for parallel vacuum dynamic shared memory allocation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:179. The instrumented operation is: Waiting for parallel vacuum dynamic shared memory allocation. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ParallelVacuumDSA. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:179 —
ParallelVacuumDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:404 —
ParallelVacuumDSA
Related controls and signals
5.44 - LWLock: PerSessionDSA
PerSessionDSA
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for parallel query dynamic shared memory allocation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:158. The instrumented operation is: Waiting for parallel query dynamic shared memory allocation. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as PerSessionDSA. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:158 —
PerSessionDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:383 —
PerSessionDSA
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.45 - LWLock: PerSessionRecordType
PerSessionRecordType
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access a parallel query’s information about composite types
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:159. The instrumented operation is: Waiting to access a parallel query’s information about composite types. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as PerSessionRecordType. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:159 —
PerSessionRecordType - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:384 —
PerSessionRecordType
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.46 - LWLock: PerSessionRecordTypmod
PerSessionRecordTypmod
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access a parallel query’s information about type modifiers that identify anonymous record types
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:160. The instrumented operation is: Waiting to access a parallel query’s information about type modifiers that identify anonymous record types. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as PerSessionRecordTypmod. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:160 —
PerSessionRecordTypmod - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:385 —
PerSessionRecordTypmod
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.47 - LWLock: PerXactPredicateList
PerXactPredicateList
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the list of predicate locks held by the current serializable transaction during a parallel query
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:164. The instrumented operation is: Waiting to access the list of predicate locks held by the current serializable transaction during a parallel query. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as PerXactPredicateList. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:164 —
PerXactPredicateList - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:389 —
PerXactPredicateList
Related controls and signals
5.48 - LWLock: PgStatsDSA
PgStatsDSA
VersionsPG 15-18
Evidence3 source location(s)
Official description
Waiting for stats dynamic shared memory allocator access
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:165. The instrumented operation is: Waiting for stats dynamic shared memory allocator access. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as PgStatsDSA. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:165 —
PgStatsDSA - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:390 —
PgStatsDSA
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.49 - LWLock: PgStatsData
PgStatsData
VersionsPG 15-18
Evidence3 source location(s)
Official description
Waiting for shared memory stats data access
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:167. The instrumented operation is: Waiting for shared memory stats data access. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as PgStatsData. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:167 —
PgStatsData - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:392 —
PgStatsData
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.50 - LWLock: PgStatsHash
PgStatsHash
VersionsPG 15-18
Evidence3 source location(s)
Official description
Waiting for stats shared memory hash table access
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:166. The instrumented operation is: Waiting for stats shared memory hash table access. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as PgStatsHash. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:166 —
PgStatsHash - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:391 —
PgStatsHash
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.51 - LWLock: PredicateLockManager
PredicateLockManager
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access predicate lock information used by serializable transactions
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:154. The instrumented operation is: Waiting to access predicate lock information used by serializable transactions. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as PredicateLockManager. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:154 —
PredicateLockManager - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:379 —
PredicateLockManager
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.52 - LWLock: ProcArray
ProcArray
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the shared per-process data structures (typically, to get a snapshot or report a session’s transaction ID)
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
ProcArrayLock protects the shared PGPROC/PGXACT arrays used for snapshots, transaction visibility, and transaction end. Snapshot acquisition and updates to process transaction state must briefly coordinate through it.
Normal or trouble?
- Normal: Brief waits are expected on busy OLTP systems that start and finish many transactions.
- Investigate: Persistent contention can accompany extreme connection counts, snapshot-heavy workloads, long transactions, or bursts of transaction completion.
Diagnostic SQL
Response
- Measure active backends and transaction age, not only total connections.
- Find long-running and idle-in-transaction sessions that keep visibility horizons old.
- Pool connections, shorten transactions, and avoid synchronized bursts of tiny transactions.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:6121 —
ProcArray - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:316 —
ProcArray
Related controls and signals
- GUCs: [guc:max_connections] · [guc:idle_in_transaction_session_timeout]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:active_backends] · [metric:oldest_transaction_age]
Typical incident pattern
An application reconnect storm creates thousands of short transactions while a reporting query holds an old snapshot, amplifying ProcArray traffic.
5.53 - LWLock: RelCacheInit
RelCacheInit
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update a pg_internal.init relation cache initialization file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:323. The instrumented operation is: Waiting to read or update a pg_internal.init relation cache initialization file. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as RelCacheInit. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:323 —
RelCacheInit - PostgreSQL 18.6 · src/backend/utils/cache/relcache.c:6765 —
RelCacheInit
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.54 - LWLock: RelationMapping
RelationMapping
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update a pg_filenode.map file (used to track the filenode assignments of certain system catalogs)
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:332. The instrumented operation is: Waiting to read or update a pg_filenode.map file (used to track the filenode assignments of certain system catalogs). LWLockAcquire could not immediately take the lightweight-lock tranche displayed as RelationMapping. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:332 —
RelationMapping - PostgreSQL 18.6 · src/backend/utils/cache/relmapper.c:311 —
RelationMapping
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.55 - LWLock: ReplicationOrigin
ReplicationOrigin
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to create, drop or use a replication origin
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/replication/logical/origin.c:377. The instrumented operation is: Waiting to create, drop or use a replication origin. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ReplicationOrigin. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/origin.c:377 —
ReplicationOrigin - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:344 —
ReplicationOrigin
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.56 - LWLock: ReplicationOriginState
ReplicationOriginState
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update the progress of one replication origin
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/replication/logical/origin.c:557. The instrumented operation is: Waiting to read or update the progress of one replication origin. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ReplicationOriginState. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/origin.c:557 —
ReplicationOriginState - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:374 —
ReplicationOriginState
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.57 - LWLock: ReplicationSlotAllocation
ReplicationSlotAllocation
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to allocate or free a replication slot
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/replication/logical/slotsync.c:543. The instrumented operation is: Waiting to allocate or free a replication slot. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ReplicationSlotAllocation. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/slotsync.c:543 —
ReplicationSlotAllocation - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:341 —
ReplicationSlotAllocation
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.58 - LWLock: ReplicationSlotControl
ReplicationSlotControl
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update replication slot state
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/replication/logical/logical.c:492. The instrumented operation is: Waiting to read or update replication slot state. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ReplicationSlotControl. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/logical.c:492 —
ReplicationSlotControl - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:342 —
ReplicationSlotControl
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.59 - LWLock: ReplicationSlotIO
ReplicationSlotIO
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for I/O on a replication slot
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:150. The instrumented operation is: Waiting for I/O on a replication slot. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ReplicationSlotIO. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:150 —
ReplicationSlotIO - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:375 —
ReplicationSlotIO
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.60 - LWLock: SInvalRead
SInvalRead
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to retrieve messages from the shared catalog invalidation queue
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/ipc/sinvaladt.c:497. The instrumented operation is: Waiting to retrieve messages from the shared catalog invalidation queue. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SInvalRead. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/sinvaladt.c:497 —
SInvalRead - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:317 —
SInvalRead
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.61 - LWLock: SInvalWrite
SInvalWrite
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to add a message to the shared catalog invalidation queue
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/ipc/sinvaladt.c:290. The instrumented operation is: Waiting to add a message to the shared catalog invalidation queue. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SInvalWrite. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/sinvaladt.c:290 —
SInvalWrite - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:318 —
SInvalWrite
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.62 - LWLock: SerialBuffer
SerialBuffer
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for I/O on a serializable transaction conflict SLRU buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:146. The instrumented operation is: Waiting for I/O on a serializable transaction conflict SLRU buffer. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SerialBuffer. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:146 —
SerialBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:371 —
SerialBuffer
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.63 - LWLock: SerialControl
SerialControl
VersionsPG 17-18
Evidence3 source location(s)
Official description
Waiting to read or update shared pg_serial state
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/predicate.c:835. The instrumented operation is: Waiting to read or update shared pg_serial state. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SerialControl. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:835 —
SerialControl - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:354 —
SerialControl
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.64 - LWLock: SerialSLRU
SerialSLRU
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the serializable transaction conflict SLRU cache
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:176. The instrumented operation is: Waiting to access the serializable transaction conflict SLRU cache. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SerialSLRU. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:176 —
SerialSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:401 —
SerialSLRU
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.65 - LWLock: SerializableFinishedList
SerializableFinishedList
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the list of finished serializable transactions
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/predicate.c:1507. The instrumented operation is: Waiting to access the list of finished serializable transactions. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SerializableFinishedList. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:1507 —
SerializableFinishedList - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:335 —
SerializableFinishedList
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.66 - LWLock: SerializablePredicateList
SerializablePredicateList
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the list of predicate locks held by serializable transactions
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/predicate.c:2220. The instrumented operation is: Waiting to access the list of predicate locks held by serializable transactions. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SerializablePredicateList. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:2220 —
SerializablePredicateList - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:336 —
SerializablePredicateList
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.67 - LWLock: SerializableXactHash
SerializableXactHash
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update information about serializable transactions
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/predicate.c:1462. The instrumented operation is: Waiting to read or update information about serializable transactions. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SerializableXactHash. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:1462 —
SerializableXactHash - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:334 —
SerializableXactHash
Related controls and signals
5.68 - LWLock: SharedTidBitmap
SharedTidBitmap
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access a shared TID bitmap during a parallel bitmap index scan
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:162. The instrumented operation is: Waiting to access a shared TID bitmap during a parallel bitmap index scan. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SharedTidBitmap. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:162 —
SharedTidBitmap - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:387 —
SharedTidBitmap
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.69 - LWLock: SharedTupleStore
SharedTupleStore
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access a shared tuple store during parallel query
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:161. The instrumented operation is: Waiting to access a shared tuple store during parallel query. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SharedTupleStore. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:161 —
SharedTupleStore - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:386 —
SharedTupleStore
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.70 - LWLock: ShmemIndex
ShmemIndex
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to find or allocate space in shared memory
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/ipc/shmem.c:392. The instrumented operation is: Waiting to find or allocate space in shared memory. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as ShmemIndex. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/shmem.c:392 —
ShmemIndex - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:313 —
ShmemIndex
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.71 - LWLock: SubtransBuffer
SubtransBuffer
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for I/O on a sub-transaction SLRU buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:142. The instrumented operation is: Waiting for I/O on a sub-transaction SLRU buffer. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SubtransBuffer. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:142 —
SubtransBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:367 —
SubtransBuffer
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.72 - LWLock: SubtransSLRU
SubtransSLRU
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the sub-transaction SLRU cache
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:177. The instrumented operation is: Waiting to access the sub-transaction SLRU cache. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SubtransSLRU. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:177 —
SubtransSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:402 —
SubtransSLRU
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.73 - LWLock: SyncRep
SyncRep
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update information about the state of synchronous replication
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
SyncRepLock protects synchronous-replication queues and shared sender state. Committers enqueue or inspect their wait position while WAL senders update which LSNs the configured synchronous standbys have acknowledged.
Normal or trouble?
- Normal: Small bursts occur as synchronous commits queue and WAL senders publish acknowledgements.
- Investigate: Sustained SyncRep LWLock contention is different from waiting for a standby acknowledgement: it means queue/state coordination itself is hot, usually under extreme commit concurrency or sender churn.
Diagnostic SQL
Response
- Separate LWLock/SyncRep from IPC/SyncRep and replication-lag waits.
- Inspect synchronous standby health, sender churn, and commit rate.
- Stabilize replication and smooth commit bursts; change durability policy only with explicit incident authority.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/syncrep.c:192 —
SyncRep - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:337 —
SyncRep
Related controls and signals
- GUCs: [guc:synchronous_standby_names] · [guc:synchronous_commit] · [guc:wal_sender_timeout]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:replication_flush_lag] · [metric:commit_latency]
Typical incident pattern
A standby flaps while a burst of synchronous committers repeatedly enters and leaves the wait queue, making queue coordination visible as LWLock/SyncRep.
5.74 - LWLock: SyncScan
SyncScan
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to select the starting location of a synchronized table scan
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/common/syncscan.c:258. The instrumented operation is: Waiting to select the starting location of a synchronized table scan. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as SyncScan. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/common/syncscan.c:258 —
SyncScan - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:331 —
SyncScan
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.75 - LWLock: TablespaceCreate
TablespaceCreate
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to create or drop a tablespace
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/commands/tablespace.c:138. The instrumented operation is: Waiting to create or drop a tablespace. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as TablespaceCreate. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/commands/tablespace.c:138 —
TablespaceCreate - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:326 —
TablespaceCreate
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.76 - LWLock: TwoPhaseState
TwoPhaseState
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to read or update the state of prepared transactions
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/twophase.c:329. The instrumented operation is: Waiting to read or update the state of prepared transactions. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as TwoPhaseState. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/twophase.c:329 —
TwoPhaseState - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:325 —
TwoPhaseState
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.77 - LWLock: WALBufMapping
WALBufMapping
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to replace a page in WAL buffers
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WALBufMappingLock coordinates the mapping between WAL page numbers and the finite wal_buffers slots. A backend needs it when advancing to or replacing a WAL buffer page.
Normal or trouble?
- Normal: Short waits appear as WAL generation advances through buffer pages.
- Investigate: Sustained contention suggests WAL generation is turning over buffers faster than the write path advances, often during write bursts or checkpoints.
Diagnostic SQL
Response
- Correlate with WAL bytes, WAL writes, and checkpoint timing.
- Check whether wal_buffers is repeatedly exhausted during bursts.
- Smooth write bursts and fix WAL device latency before tuning buffer size.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:1999 —
WALBufMapping - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:319 —
WALBufMapping
Related controls and signals
- GUCs: [guc:wal_buffers] · [guc:checkpoint_timeout] · [guc:max_wal_size]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:wal_bytes] · [metric:wal_write_time]
Typical incident pattern
A bulk load saturates WAL generation while the WAL device stalls, forcing frequent WAL buffer remapping.
5.78 - LWLock: WALInsert
WALInsert
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to insert WAL data into a memory buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
A backend must hold one of the WAL insertion locks while reserving and copying a WAL record into shared WAL buffers. High concurrent WAL producers can queue when insertion critical sections lengthen.
Normal or trouble?
- Normal: Transient waits are normal during concurrent writes and commit bursts.
- Investigate: A recurring foreground pile-up indicates WAL insertion has become a serialization point, often with very high write concurrency, full-page images, or slow buffer turnover.
Diagnostic SQL
Response
- Rank statements by WAL generation and call rate.
- Check checkpoint/full-page-image timing and concurrent writer count.
- Batch tiny writes, reduce needless index churn, and address WAL write latency.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:1399 —
WALInsert - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:372 —
WALInsert
Related controls and signals
- GUCs: [guc:wal_buffers] · [guc:full_page_writes] · [guc:checkpoint_timeout]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:wal_bytes] · [metric:wal_fpi] · [metric:statement_wal_bytes]
Typical incident pattern
A fan-out job issues many single-row commits immediately after a checkpoint; full-page images and writer concurrency turn WAL insertion into the bottleneck.
5.79 - LWLock: WALSummarizer
WALSummarizer
VersionsPG 17-18
Evidence3 source location(s)
Official description
Waiting to read or update WAL summarization state
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/postmaster/walsummarizer.c:273. The instrumented operation is: Waiting to read or update WAL summarization state. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as WALSummarizer. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/walsummarizer.c:273 —
WALSummarizer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:351 —
WALSummarizer
Related controls and signals
5.80 - LWLock: WALWrite
WALWrite
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for WAL buffers to be written to disk
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WALWriteLock serializes progress that writes shared WAL buffers and advances the written/flushed WAL positions. A waiter is queued behind the backend currently performing or coordinating that work.
Normal or trouble?
- Normal: Brief waits occur when concurrent committers help write WAL.
- Investigate: Sustained WALWrite with commit latency usually means the WAL write path is slow or cannot absorb the generated WAL rate.
Diagnostic SQL
Response
- Compare WAL write and sync time with commit latency.
- Check the WAL filesystem/device, virtualization throttling, and checkpoint overlap.
- Reduce burstiness; tune wal_writer settings only after storage evidence confirms the path.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:2047 —
WALWrite - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:320 —
WALWrite
Related controls and signals
- GUCs: [guc:wal_writer_delay] · [guc:wal_writer_flush_after] · [guc:synchronous_commit]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:wal_write_time] · [metric:wal_sync_time] · [metric:commit_latency]
Typical incident pattern
A cloud volume hits its burst-credit ceiling; WAL writes lengthen, committers queue on WALWrite, and synchronous commits slow together.
5.81 - LWLock: WaitEventCustom
WaitEventCustom
VersionsPG 17-18
Evidence3 source location(s)
Official description
Waiting to read or update custom wait events information
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:193. The instrumented operation is: Waiting to read or update custom wait events information. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as WaitEventCustom. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event.c:193 —
WaitEventCustom - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:350 —
WaitEventCustom
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
5.82 - LWLock: WrapLimitsVacuum
WrapLimitsVacuum
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to update limits on transaction id and multixact consumption
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/commands/vacuum.c:1858. The instrumented operation is: Waiting to update limits on transaction id and multixact consumption. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as WrapLimitsVacuum. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/commands/vacuum.c:1858 —
WrapLimitsVacuum - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:348 —
WrapLimitsVacuum
Related controls and signals
5.83 - LWLock: XactBuffer
XactBuffer
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting for I/O on a transaction status SLRU buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/storage/lmgr/lwlock.c:140. The instrumented operation is: Waiting for I/O on a transaction status SLRU buffer. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as XactBuffer. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:140 —
XactBuffer - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:365 —
XactBuffer
Related controls and signals
5.84 - LWLock: XactSLRU
XactSLRU
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the transaction status SLRU cache
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
The transaction-status SLRU lock protects pg_xact cache metadata and pages while PostgreSQL reads or updates transaction commit status. Visibility checks for uncached or old XIDs can bring this path into the foreground.
Normal or trouble?
- Normal: Short waits accompany transaction completion and occasional pg_xact cache misses.
- Investigate: Persistent waits can indicate transaction-status cache churn, access to very old tuples, or storage latency on the pg_xact path.
Diagnostic SQL
Response
- Check old transactions and vacuum/freeze health.
- Correlate with XactBuffer and pg_xact I/O waits.
- Remove visibility-horizon blockers and restore vacuum progress before changing SLRU-related capacity.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:178 —
XactSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:403 —
XactSLRU
Related controls and signals
- GUCs: [guc:autovacuum_freeze_max_age] · [guc:vacuum_freeze_table_age]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:oldest_transaction_age] · [metric:xact_slru_io]
Typical incident pattern
A long-lived snapshot prevents cleanup while queries revisit cold, old tuple versions, creating pg_xact cache churn and XactSLRU contention.
5.85 - LWLock: XactTruncation
XactTruncation
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to execute pg_xact_status or update the oldest transaction ID available to it
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/varsup.c:357. The instrumented operation is: Waiting to execute pg_xact_status or update the oldest transaction ID available to it. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as XactTruncation. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/varsup.c:357 —
XactTruncation - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:347 —
XactTruncation
Related controls and signals
5.86 - LWLock: XidGen
XidGen
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to allocate a new transaction ID
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:739 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/varsup.c:105. The instrumented operation is: Waiting to allocate a new transaction ID. LWLockAcquire could not immediately take the lightweight-lock tranche displayed as XidGen. The generic LWLock reporter publishes the tranche name while the backend sleeps on the internal shared-memory resource.
Normal or trouble?
- Normal: A brief sample is normal around short internal critical sections.
- Investigate: Investigate when the same tranche affects at least 10% of active foreground sessions in three consecutive one-second samples; treat 25% or waits beyond five seconds as urgent.
Diagnostic SQL
Response
- Repeat the snapshot and isolate one hot tranche.
- Correlate it with the protected resource and current workload phase.
- Reduce the specific contention source; adding concurrency can make a shared-memory hotspot worse.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/varsup.c:105 —
XidGen - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:315 —
XidGen
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
6 - I/O waits
IO means PostgreSQL has instrumented a file operation and the backend cannot continue until the kernel or another I/O worker makes progress. It says which PostgreSQL file path is involved; it does not, by itself, prove the storage is slow.
Read event + operation + workload phase
Names usually encode both object and operation: DataFileRead, WalSync, SlruWrite, ReorderBufferRead. Ask whether the workload should be performing that operation now, then compare duration and concurrency with pg_stat_io (PG16+) and operating-system latency.
- Normal: scans read data files, checkpoints sync dirty files, backups read/write, recovery reads WAL.
- Watch: the same foreground I/O event persists in consecutive samples and device latency or query latency rises.
- Urgent: many backends queue behind sync/write completion, errors appear, or the affected path reaches saturation/throttling.
Events to recognize
| Event | First interpretation |
|---|---|
| DataFileRead | Cache miss or scan reading relation data |
| DataFileWrite | Backend/checkpoint path writing relation data |
| DataFileSync | Relation changes are being made durable |
| WalWrite | WAL bytes are being written |
| WalSync | WAL durability boundary is waiting on fsync/fdatasync |
| SlruRead | Transaction-related SLRU page read |
| BuffileRead | Temp/spill file read |
| AioIoCompletion | PG18 AIO work has not completed yet |
PG16+ I/O context
Common misreads
- A high count of
DataFileReadduring an intentional sequential scan can be healthy throughput. WalWriteand LWLockWALWriteare different: one is a file operation, the other internal coordination.- Average device latency can hide a saturated single WAL volume or tail-latency spikes.
- Raising cache size cannot fix every read wait; poor plans and cold one-time scans may simply displace useful pages.
6.1 - IO: AioIoCompletion
AioIoCompletion
VersionsPG 18
Evidence2 source location(s)
Official description
Waiting for another process to complete IO
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
WAIT_EVENT_AIO_IO_COMPLETION at src/backend/storage/aio/aio.c:643 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:196. The instrumented operation is: Waiting for another process to complete IO. PostgreSQL reports AioIoCompletion around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/aio/aio.c:643 —
WAIT_EVENT_AIO_IO_COMPLETION - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:196 —
AIO_IO_COMPLETION
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.2 - IO: AioIoUringExecution
AioIoUringExecution
VersionsPG 18
Evidence2 source location(s)
Official description
Waiting for IO execution via io_uring
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
WAIT_EVENT_AIO_IO_URING_EXECUTION at src/backend/storage/aio/method_io_uring.c:624 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:198. The instrumented operation is: Waiting for IO execution via io_uring. PostgreSQL reports AioIoUringExecution around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/aio/method_io_uring.c:624 —
WAIT_EVENT_AIO_IO_URING_EXECUTION - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:198 —
AIO_IO_URING_EXECUTION
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.3 - IO: AioIoUringSubmit
AioIoUringSubmit
VersionsPG 18
Evidence2 source location(s)
Official description
Waiting for IO submission via io_uring
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
WAIT_EVENT_AIO_IO_URING_SUBMIT at src/backend/storage/aio/method_io_uring.c:451 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:197. The instrumented operation is: Waiting for IO submission via io_uring. PostgreSQL reports AioIoUringSubmit around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/aio/method_io_uring.c:451 —
WAIT_EVENT_AIO_IO_URING_SUBMIT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:197 —
AIO_IO_URING_SUBMIT
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.4 - IO: BasebackupRead
BasebackupRead
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for base backup to read from a file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/BaseBackupRead (PG 14-16)
Trigger mechanism
WAIT_EVENT_BASEBACKUP_READ at src/backend/backup/basebackup.c:1837 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:541. The instrumented operation is: Waiting for base backup to read from a file. PostgreSQL reports BasebackupRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/backup/basebackup.c:1837 —
WAIT_EVENT_BASEBACKUP_READ - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:541 —
BaseBackupRead - PostgreSQL 18.6 · src/backend/backup/basebackup.c:2119 —
WAIT_EVENT_BASEBACKUP_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:199 —
BASEBACKUP_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.5 - IO: BasebackupSync
BasebackupSync
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for data written by a base backup to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/BaseBackupSync (PG 15-16)
Trigger mechanism
WAIT_EVENT_BASEBACKUP_SYNC at src/backend/backup/basebackup_server.c:206 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:544. The instrumented operation is: Waiting for data written by a base backup to reach durable storage. PostgreSQL reports BasebackupSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/backup/basebackup_server.c:206 —
WAIT_EVENT_BASEBACKUP_SYNC - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:544 —
BaseBackupSync - PostgreSQL 18.6 · src/backend/backup/basebackup_server.c:204 —
WAIT_EVENT_BASEBACKUP_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:200 —
BASEBACKUP_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.6 - IO: BasebackupWrite
BasebackupWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for base backup to write to a file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/BaseBackupWrite (PG 15-16)
Trigger mechanism
WAIT_EVENT_BASEBACKUP_WRITE at src/backend/backup/basebackup_server.c:168 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:547. The instrumented operation is: Waiting for base backup to write to a file. PostgreSQL reports BasebackupWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/backup/basebackup_server.c:168 —
WAIT_EVENT_BASEBACKUP_WRITE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:547 —
BaseBackupWrite - PostgreSQL 18.6 · src/backend/backup/basebackup_server.c:166 —
WAIT_EVENT_BASEBACKUP_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:201 —
BASEBACKUP_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.7 - IO: BuffileRead
BuffileRead
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a read from a buffered file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/BufFileRead (PG 13-16)
Trigger mechanism
WAIT_EVENT_BUFFILE_READ at src/backend/storage/file/buffile.c:464 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:550. The instrumented operation is: Waiting for a read from a buffered file. PostgreSQL reports BuffileRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/storage/file/buffile.c:464 —
WAIT_EVENT_BUFFILE_READ - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:550 —
BufFileRead - PostgreSQL 18.6 · src/backend/storage/file/buffile.c:464 —
WAIT_EVENT_BUFFILE_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:202 —
BUFFILE_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.8 - IO: BuffileTruncate
BuffileTruncate
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a buffered file to be truncated
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/BufFileTruncate (PG 14-16)
Trigger mechanism
WAIT_EVENT_BUFFILE_TRUNCATE at src/backend/storage/file/buffile.c:989 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:556. The instrumented operation is: Waiting for a buffered file to be truncated. PostgreSQL reports BuffileTruncate around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/storage/file/buffile.c:989 —
WAIT_EVENT_BUFFILE_TRUNCATE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:556 —
BufFileTruncate - PostgreSQL 18.6 · src/backend/storage/file/buffile.c:966 —
WAIT_EVENT_BUFFILE_TRUNCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:204 —
BUFFILE_TRUNCATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.9 - IO: BuffileWrite
BuffileWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a write to a buffered file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/BufFileWrite (PG 13-16)
Trigger mechanism
WAIT_EVENT_BUFFILE_WRITE at src/backend/storage/file/buffile.c:541 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:553. The instrumented operation is: Waiting for a write to a buffered file. PostgreSQL reports BuffileWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/storage/file/buffile.c:541 —
WAIT_EVENT_BUFFILE_WRITE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:553 —
BufFileWrite - PostgreSQL 18.6 · src/backend/storage/file/buffile.c:541 —
WAIT_EVENT_BUFFILE_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:203 —
BUFFILE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.10 - IO: ControlFileRead
ControlFileRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read from the pg_control file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CONTROL_FILE_READ at src/backend/access/transam/xlog.c:4362 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:205. The instrumented operation is: Waiting for a read from the pg_control file. PostgreSQL reports ControlFileRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:4362 —
WAIT_EVENT_CONTROL_FILE_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:205 —
CONTROL_FILE_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.11 - IO: ControlFileSync
ControlFileSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for the pg_control file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CONTROL_FILE_SYNC at src/backend/access/transam/xlog.c:4328 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:206. The instrumented operation is: Waiting for the pg_control file to reach durable storage. PostgreSQL reports ControlFileSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:4328 —
WAIT_EVENT_CONTROL_FILE_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:206 —
CONTROL_FILE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.12 - IO: ControlFileSyncUpdate
ControlFileSyncUpdate
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for an update to the pg_control file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CONTROL_FILE_SYNC_UPDATE at src/common/controldata_utils.c:259 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:207. The instrumented operation is: Waiting for an update to the pg_control file to reach durable storage. PostgreSQL reports ControlFileSyncUpdate around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:207 —
CONTROL_FILE_SYNC_UPDATE - PostgreSQL 18.6 · src/common/controldata_utils.c:259 —
WAIT_EVENT_CONTROL_FILE_SYNC_UPDATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.13 - IO: ControlFileWrite
ControlFileWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write to the pg_control file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CONTROL_FILE_WRITE at src/backend/access/transam/xlog.c:4315 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:208. The instrumented operation is: Waiting for a write to the pg_control file. PostgreSQL reports ControlFileWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:4315 —
WAIT_EVENT_CONTROL_FILE_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:208 —
CONTROL_FILE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.14 - IO: ControlFileWriteUpdate
ControlFileWriteUpdate
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write to update the pg_control file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CONTROL_FILE_WRITE_UPDATE at src/common/controldata_utils.c:235 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:209. The instrumented operation is: Waiting for a write to update the pg_control file. PostgreSQL reports ControlFileWriteUpdate around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:209 —
CONTROL_FILE_WRITE_UPDATE - PostgreSQL 18.6 · src/common/controldata_utils.c:235 —
WAIT_EVENT_CONTROL_FILE_WRITE_UPDATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.15 - IO: CopyFileCopy
CopyFileCopy
VersionsPG 18
Evidence2 source location(s)
Official description
Waiting for a file copy operation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
WAIT_EVENT_COPY_FILE_COPY at src/backend/storage/file/copydir.c:270 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:210. The instrumented operation is: Waiting for a file copy operation. PostgreSQL reports CopyFileCopy around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/file/copydir.c:270 —
WAIT_EVENT_COPY_FILE_COPY - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:210 —
COPY_FILE_COPY
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.16 - IO: CopyFileRead
CopyFileRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read during a file copy operation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_COPY_FILE_READ at src/backend/storage/file/copydir.c:195 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:211. The instrumented operation is: Waiting for a read during a file copy operation. PostgreSQL reports CopyFileRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/file/copydir.c:195 —
WAIT_EVENT_COPY_FILE_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:211 —
COPY_FILE_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.17 - IO: CopyFileWrite
CopyFileWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write during a file copy operation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_COPY_FILE_WRITE at src/backend/storage/file/copydir.c:205 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:212. The instrumented operation is: Waiting for a write during a file copy operation. PostgreSQL reports CopyFileWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/file/copydir.c:205 —
WAIT_EVENT_COPY_FILE_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:212 —
COPY_FILE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.18 - IO: DataFileExtend
DataFileExtend
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a relation data file to be extended
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_DATA_FILE_EXTEND at src/backend/storage/smgr/md.c:512 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:213. The instrumented operation is: Waiting for a relation data file to be extended. PostgreSQL reports DataFileExtend around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/smgr/md.c:512 —
WAIT_EVENT_DATA_FILE_EXTEND - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:213 —
DATA_FILE_EXTEND
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.19 - IO: DataFileFlush
DataFileFlush
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a relation data file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_DATA_FILE_FLUSH at src/backend/storage/smgr/md.c:1208 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:214. The instrumented operation is: Waiting for a relation data file to reach durable storage. PostgreSQL reports DataFileFlush around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/smgr/md.c:1208 —
WAIT_EVENT_DATA_FILE_FLUSH - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:214 —
DATA_FILE_FLUSH
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.20 - IO: DataFileImmediateSync
DataFileImmediateSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for an immediate synchronization of a relation data file to durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_DATA_FILE_IMMEDIATE_SYNC at src/backend/storage/smgr/md.c:1466 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:215. The instrumented operation is: Waiting for an immediate synchronization of a relation data file to durable storage. PostgreSQL reports DataFileImmediateSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/smgr/md.c:1466 —
WAIT_EVENT_DATA_FILE_IMMEDIATE_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:215 —
DATA_FILE_IMMEDIATE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.21 - IO: DataFilePrefetch
DataFilePrefetch
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for an asynchronous prefetch from a relation data file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_DATA_FILE_PREFETCH at src/backend/storage/smgr/md.c:767 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:216. The instrumented operation is: Waiting for an asynchronous prefetch from a relation data file. PostgreSQL reports DataFilePrefetch around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/smgr/md.c:767 —
WAIT_EVENT_DATA_FILE_PREFETCH - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:216 —
DATA_FILE_PREFETCH
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.22 - IO: DataFileRead
DataFileRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read from a relation data file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_DATA_FILE_READ at src/backend/storage/aio/aio_io.c:127 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:217. The instrumented operation is: Waiting for a read from a relation data file. PostgreSQL reports DataFileRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/aio/aio_io.c:127 —
WAIT_EVENT_DATA_FILE_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:217 —
DATA_FILE_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.23 - IO: DataFileSync
DataFileSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for changes to a relation data file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_DATA_FILE_SYNC at src/backend/storage/smgr/md.c:1526 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:218. The instrumented operation is: Waiting for changes to a relation data file to reach durable storage. PostgreSQL reports DataFileSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/smgr/md.c:1526 —
WAIT_EVENT_DATA_FILE_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:218 —
DATA_FILE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.24 - IO: DataFileTruncate
DataFileTruncate
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a relation data file to be truncated
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_DATA_FILE_TRUNCATE at src/backend/storage/smgr/md.c:1329 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:219. The instrumented operation is: Waiting for a relation data file to be truncated. PostgreSQL reports DataFileTruncate around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/smgr/md.c:1329 —
WAIT_EVENT_DATA_FILE_TRUNCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:219 —
DATA_FILE_TRUNCATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.25 - IO: DataFileWrite
DataFileWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write to a relation data file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_DATA_FILE_WRITE at src/backend/storage/aio/aio_io.c:134 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:220. The instrumented operation is: Waiting for a write to a relation data file. PostgreSQL reports DataFileWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/aio/aio_io.c:134 —
WAIT_EVENT_DATA_FILE_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:220 —
DATA_FILE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.26 - IO: DsmAllocate
DsmAllocate
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a dynamic shared memory segment to be allocated
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/DSMAllocate (PG 16)
Trigger mechanism
WAIT_EVENT_DSM_ALLOCATE at src/backend/storage/ipc/dsm_impl.c:366 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:604. The instrumented operation is: Waiting for a dynamic shared memory segment to be allocated. PostgreSQL reports DsmAllocate around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/storage/ipc/dsm_impl.c:366 —
WAIT_EVENT_DSM_ALLOCATE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:604 —
DSMAllocate - PostgreSQL 18.6 · src/backend/storage/ipc/dsm_impl.c:366 —
WAIT_EVENT_DSM_ALLOCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:221 —
DSM_ALLOCATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.27 - IO: DsmFillZeroWrite
DsmFillZeroWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting to fill a dynamic shared memory backing file with zeroes
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/DSMFillZeroWrite (PG 13-16)
Trigger mechanism
WAIT_EVENT_DSM_FILL_ZERO_WRITE at src/backend/storage/ipc/dsm_impl.c:891 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:607. The instrumented operation is: Waiting to fill a dynamic shared memory backing file with zeroes. PostgreSQL reports DsmFillZeroWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/storage/ipc/dsm_impl.c:891 —
WAIT_EVENT_DSM_FILL_ZERO_WRITE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:607 —
DSMFillZeroWrite - PostgreSQL 18.6 · src/backend/storage/ipc/dsm_impl.c:891 —
WAIT_EVENT_DSM_FILL_ZERO_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:222 —
DSM_FILL_ZERO_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.28 - IO: LockFileAddtodatadirRead
LockFileAddtodatadirRead
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a read while adding a line to the data directory lock file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/LockFileAddToDataDirRead (PG 13-16)
Trigger mechanism
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ at src/backend/utils/init/miscinit.c:1586 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:610. The instrumented operation is: Waiting for a read while adding a line to the data directory lock file. PostgreSQL reports LockFileAddtodatadirRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:610 —
LockFileAddToDataDirRead - PostgreSQL 16.15 · src/backend/utils/init/miscinit.c:1586 —
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:223 —
LOCK_FILE_ADDTODATADIR_READ - PostgreSQL 18.6 · src/backend/utils/init/miscinit.c:1590 —
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.29 - IO: LockFileAddtodatadirSync
LockFileAddtodatadirSync
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for data to reach durable storage while adding a line to the data directory lock file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/LockFileAddToDataDirSync (PG 13-16)
Trigger mechanism
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC at src/backend/utils/init/miscinit.c:1663 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:613. The instrumented operation is: Waiting for data to reach durable storage while adding a line to the data directory lock file. PostgreSQL reports LockFileAddtodatadirSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:613 —
LockFileAddToDataDirSync - PostgreSQL 16.15 · src/backend/utils/init/miscinit.c:1663 —
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:224 —
LOCK_FILE_ADDTODATADIR_SYNC - PostgreSQL 18.6 · src/backend/utils/init/miscinit.c:1667 —
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.30 - IO: LockFileAddtodatadirWrite
LockFileAddtodatadirWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a write while adding a line to the data directory lock file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/LockFileAddToDataDirWrite (PG 13-16)
Trigger mechanism
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_WRITE at src/backend/utils/init/miscinit.c:1648 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:616. The instrumented operation is: Waiting for a write while adding a line to the data directory lock file. PostgreSQL reports LockFileAddtodatadirWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:616 —
LockFileAddToDataDirWrite - PostgreSQL 16.15 · src/backend/utils/init/miscinit.c:1648 —
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:225 —
LOCK_FILE_ADDTODATADIR_WRITE - PostgreSQL 18.6 · src/backend/utils/init/miscinit.c:1652 —
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.31 - IO: LockFileCreateRead
LockFileCreateRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to read while creating the data directory lock file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOCK_FILE_CREATE_READ at src/backend/utils/init/miscinit.c:1302 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:226. The instrumented operation is: Waiting to read while creating the data directory lock file. PostgreSQL reports LockFileCreateRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:226 —
LOCK_FILE_CREATE_READ - PostgreSQL 18.6 · src/backend/utils/init/miscinit.c:1302 —
WAIT_EVENT_LOCK_FILE_CREATE_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.32 - IO: LockFileCreateSync
LockFileCreateSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for data to reach durable storage while creating the data directory lock file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOCK_FILE_CREATE_SYNC at src/backend/utils/init/miscinit.c:1465 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:227. The instrumented operation is: Waiting for data to reach durable storage while creating the data directory lock file. PostgreSQL reports LockFileCreateSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:227 —
LOCK_FILE_CREATE_SYNC - PostgreSQL 18.6 · src/backend/utils/init/miscinit.c:1465 —
WAIT_EVENT_LOCK_FILE_CREATE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.33 - IO: LockFileCreateWrite
LockFileCreateWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write while creating the data directory lock file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOCK_FILE_CREATE_WRITE at src/backend/utils/init/miscinit.c:1450 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:228. The instrumented operation is: Waiting for a write while creating the data directory lock file. PostgreSQL reports LockFileCreateWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:228 —
LOCK_FILE_CREATE_WRITE - PostgreSQL 18.6 · src/backend/utils/init/miscinit.c:1450 —
WAIT_EVENT_LOCK_FILE_CREATE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.34 - IO: LockFileRecheckdatadirRead
LockFileRecheckdatadirRead
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a read during recheck of the data directory lock file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/LockFileReCheckDataDirRead (PG 13-16)
Trigger mechanism
WAIT_EVENT_LOCK_FILE_RECHECKDATADIR_READ at src/backend/utils/init/miscinit.c:1728 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:628. The instrumented operation is: Waiting for a read during recheck of the data directory lock file. PostgreSQL reports LockFileRecheckdatadirRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:628 —
LockFileReCheckDataDirRead - PostgreSQL 16.15 · src/backend/utils/init/miscinit.c:1728 —
WAIT_EVENT_LOCK_FILE_RECHECKDATADIR_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:229 —
LOCK_FILE_RECHECKDATADIR_READ - PostgreSQL 18.6 · src/backend/utils/init/miscinit.c:1732 —
WAIT_EVENT_LOCK_FILE_RECHECKDATADIR_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.35 - IO: LogicalChangesRead
LogicalChangesRead
VersionsPG 14
Evidence1 source location(s)
Official description
Waiting for a read from a logical changes file.
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | — | — | — | — |
Trigger mechanism
The catalog identity is present, but source audit found no live reporter in 14. Known active ranges: none. The definition location below is retained as negative evidence; this exact release cannot emit the event from a core code path. Evidence: pgsql-hackers confirmation.
Normal or trouble?
- Normal: No live core occurrence is expected on the audited release.
- Investigate: If telemetry shows it, verify the exact patch version, extension origin, and whether the sample is stale or came from a different server.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 14.24 · src/backend/utils/activity/wait_event.c:727 —
LogicalChangesRead
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.36 - IO: LogicalChangesWrite
LogicalChangesWrite
VersionsPG 14
Evidence1 source location(s)
Official description
Waiting for a write to a logical changes file.
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | — | — | — | — |
Trigger mechanism
The catalog identity is present, but source audit found no live reporter in 14. Known active ranges: none. The definition location below is retained as negative evidence; this exact release cannot emit the event from a core code path. Evidence: pgsql-hackers confirmation.
Normal or trouble?
- Normal: No live core occurrence is expected on the audited release.
- Investigate: If telemetry shows it, verify the exact patch version, extension origin, and whether the sample is stale or came from a different server.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 14.24 · src/backend/utils/activity/wait_event.c:730 —
LogicalChangesWrite
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.37 - IO: LogicalRewriteCheckpointSync
LogicalRewriteCheckpointSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for logical rewrite mappings to reach durable storage during a checkpoint
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_REWRITE_CHECKPOINT_SYNC at src/backend/access/heap/rewriteheap.c:1236 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:230. The instrumented operation is: Waiting for logical rewrite mappings to reach durable storage during a checkpoint. PostgreSQL reports LogicalRewriteCheckpointSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/heap/rewriteheap.c:1236 —
WAIT_EVENT_LOGICAL_REWRITE_CHECKPOINT_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:230 —
LOGICAL_REWRITE_CHECKPOINT_SYNC
Related controls and signals
6.38 - IO: LogicalRewriteMappingSync
LogicalRewriteMappingSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for mapping data to reach durable storage during a logical rewrite
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_REWRITE_MAPPING_SYNC at src/backend/access/heap/rewriteheap.c:1131 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:231. The instrumented operation is: Waiting for mapping data to reach durable storage during a logical rewrite. PostgreSQL reports LogicalRewriteMappingSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/heap/rewriteheap.c:1131 —
WAIT_EVENT_LOGICAL_REWRITE_MAPPING_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:231 —
LOGICAL_REWRITE_MAPPING_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.39 - IO: LogicalRewriteMappingWrite
LogicalRewriteMappingWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write of mapping data during a logical rewrite
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_REWRITE_MAPPING_WRITE at src/backend/access/heap/rewriteheap.c:1114 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:232. The instrumented operation is: Waiting for a write of mapping data during a logical rewrite. PostgreSQL reports LogicalRewriteMappingWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/heap/rewriteheap.c:1114 —
WAIT_EVENT_LOGICAL_REWRITE_MAPPING_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:232 —
LOGICAL_REWRITE_MAPPING_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.40 - IO: LogicalRewriteSync
LogicalRewriteSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for logical rewrite mappings to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_REWRITE_SYNC at src/backend/access/heap/rewriteheap.c:922 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:233. The instrumented operation is: Waiting for logical rewrite mappings to reach durable storage. PostgreSQL reports LogicalRewriteSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/heap/rewriteheap.c:922 —
WAIT_EVENT_LOGICAL_REWRITE_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:233 —
LOGICAL_REWRITE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.41 - IO: LogicalRewriteTruncate
LogicalRewriteTruncate
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for truncate of mapping data during a logical rewrite
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_REWRITE_TRUNCATE at src/backend/access/heap/rewriteheap.c:1100 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:234. The instrumented operation is: Waiting for truncate of mapping data during a logical rewrite. PostgreSQL reports LogicalRewriteTruncate around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/heap/rewriteheap.c:1100 —
WAIT_EVENT_LOGICAL_REWRITE_TRUNCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:234 —
LOGICAL_REWRITE_TRUNCATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.42 - IO: LogicalRewriteWrite
LogicalRewriteWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write of logical rewrite mappings
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_REWRITE_WRITE at src/backend/access/heap/rewriteheap.c:881 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:235. The instrumented operation is: Waiting for a write of logical rewrite mappings. PostgreSQL reports LogicalRewriteWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/heap/rewriteheap.c:881 —
WAIT_EVENT_LOGICAL_REWRITE_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:235 —
LOGICAL_REWRITE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.43 - IO: LogicalSubxactRead
LogicalSubxactRead
VersionsPG 14
Evidence1 source location(s)
Official description
Waiting for a read from a logical subxact file.
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | — | — | — | — |
Trigger mechanism
The catalog identity is present, but source audit found no live reporter in 14. Known active ranges: none. The definition location below is retained as negative evidence; this exact release cannot emit the event from a core code path. Evidence: pgsql-hackers confirmation.
Normal or trouble?
- Normal: No live core occurrence is expected on the audited release.
- Investigate: If telemetry shows it, verify the exact patch version, extension origin, and whether the sample is stale or came from a different server.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 14.24 · src/backend/utils/activity/wait_event.c:733 —
LogicalSubxactRead
Related controls and signals
6.44 - IO: LogicalSubxactWrite
LogicalSubxactWrite
VersionsPG 14
Evidence1 source location(s)
Official description
Waiting for a write to a logical subxact file.
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | — | — | — | — |
Trigger mechanism
The catalog identity is present, but source audit found no live reporter in 14. Known active ranges: none. The definition location below is retained as negative evidence; this exact release cannot emit the event from a core code path. Evidence: pgsql-hackers confirmation.
Normal or trouble?
- Normal: No live core occurrence is expected on the audited release.
- Investigate: If telemetry shows it, verify the exact patch version, extension origin, and whether the sample is stale or came from a different server.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 14.24 · src/backend/utils/activity/wait_event.c:736 —
LogicalSubxactWrite
Related controls and signals
6.45 - IO: RelationMapRead
RelationMapRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read of the relation map file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RELATION_MAP_READ at src/backend/utils/cache/relmapper.c:822 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:236. The instrumented operation is: Waiting for a read of the relation map file. PostgreSQL reports RelationMapRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:236 —
RELATION_MAP_READ - PostgreSQL 18.6 · src/backend/utils/cache/relmapper.c:822 —
WAIT_EVENT_RELATION_MAP_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.46 - IO: RelationMapReplace
RelationMapReplace
VersionsPG 16-18
Evidence2 source location(s)
Official description
Waiting for durable replacement of a relation map file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RELATION_MAP_REPLACE at src/backend/utils/cache/relmapper.c:988 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:237. The instrumented operation is: Waiting for durable replacement of a relation map file. PostgreSQL reports RelationMapReplace around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:237 —
RELATION_MAP_REPLACE - PostgreSQL 18.6 · src/backend/utils/cache/relmapper.c:988 —
WAIT_EVENT_RELATION_MAP_REPLACE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.47 - IO: RelationMapSync
RelationMapSync
VersionsPG 13-15
Evidence2 source location(s)
Official description
Waiting for the relation map file to reach durable storage.
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | — | — | — |
Trigger mechanism
WAIT_EVENT_RELATION_MAP_SYNC at src/backend/utils/cache/relmapper.c:957 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:637. The instrumented operation is: Waiting for the relation map file to reach durable storage. PostgreSQL reports RelationMapSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 15.19 · src/backend/utils/activity/wait_event.c:637 —
RelationMapSync - PostgreSQL 15.19 · src/backend/utils/cache/relmapper.c:957 —
WAIT_EVENT_RELATION_MAP_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.48 - IO: RelationMapWrite
RelationMapWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write to the relation map file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RELATION_MAP_WRITE at src/backend/utils/cache/relmapper.c:939 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:238. The instrumented operation is: Waiting for a write to the relation map file. PostgreSQL reports RelationMapWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:238 —
RELATION_MAP_WRITE - PostgreSQL 18.6 · src/backend/utils/cache/relmapper.c:939 —
WAIT_EVENT_RELATION_MAP_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.49 - IO: ReorderBufferRead
ReorderBufferRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read during reorder buffer management
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REORDER_BUFFER_READ at src/backend/replication/logical/reorderbuffer.c:4609 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:239. The instrumented operation is: Waiting for a read during reorder buffer management. PostgreSQL reports ReorderBufferRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/reorderbuffer.c:4609 —
WAIT_EVENT_REORDER_BUFFER_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:239 —
REORDER_BUFFER_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.50 - IO: ReorderBufferWrite
ReorderBufferWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write during reorder buffer management
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REORDER_BUFFER_WRITE at src/backend/replication/logical/reorderbuffer.c:4265 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:240. The instrumented operation is: Waiting for a write during reorder buffer management. PostgreSQL reports ReorderBufferWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/reorderbuffer.c:4265 —
WAIT_EVENT_REORDER_BUFFER_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:240 —
REORDER_BUFFER_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.51 - IO: ReorderLogicalMappingRead
ReorderLogicalMappingRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read of a logical mapping during reorder buffer management
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REORDER_LOGICAL_MAPPING_READ at src/backend/replication/logical/reorderbuffer.c:5383 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:241. The instrumented operation is: Waiting for a read of a logical mapping during reorder buffer management. PostgreSQL reports ReorderLogicalMappingRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/reorderbuffer.c:5383 —
WAIT_EVENT_REORDER_LOGICAL_MAPPING_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:241 —
REORDER_LOGICAL_MAPPING_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.52 - IO: ReplicationSlotRead
ReplicationSlotRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read from a replication slot control file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REPLICATION_SLOT_READ at src/backend/replication/slot.c:2540 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:242. The instrumented operation is: Waiting for a read from a replication slot control file. PostgreSQL reports ReplicationSlotRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/slot.c:2540 —
WAIT_EVENT_REPLICATION_SLOT_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:242 —
REPLICATION_SLOT_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.53 - IO: ReplicationSlotRestoreSync
ReplicationSlotRestoreSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a replication slot control file to reach durable storage while restoring it to memory
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REPLICATION_SLOT_RESTORE_SYNC at src/backend/replication/slot.c:2526 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:243. The instrumented operation is: Waiting for a replication slot control file to reach durable storage while restoring it to memory. PostgreSQL reports ReplicationSlotRestoreSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/slot.c:2526 —
WAIT_EVENT_REPLICATION_SLOT_RESTORE_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:243 —
REPLICATION_SLOT_RESTORE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.54 - IO: ReplicationSlotSync
ReplicationSlotSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a replication slot control file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REPLICATION_SLOT_SYNC at src/backend/replication/slot.c:2405 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:244. The instrumented operation is: Waiting for a replication slot control file to reach durable storage. PostgreSQL reports ReplicationSlotSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/slot.c:2405 —
WAIT_EVENT_REPLICATION_SLOT_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:244 —
REPLICATION_SLOT_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.55 - IO: ReplicationSlotWrite
ReplicationSlotWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write to a replication slot control file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REPLICATION_SLOT_WRITE at src/backend/replication/slot.c:2384 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:245. The instrumented operation is: Waiting for a write to a replication slot control file. PostgreSQL reports ReplicationSlotWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/slot.c:2384 —
WAIT_EVENT_REPLICATION_SLOT_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:245 —
REPLICATION_SLOT_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.56 - IO: SlruFlushSync
SlruFlushSync
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for SLRU data to reach durable storage during a checkpoint or database shutdown
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/SLRUFlushSync (PG 13-16)
Trigger mechanism
WAIT_EVENT_SLRU_FLUSH_SYNC at src/backend/access/transam/slru.c:1606 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:679. The instrumented operation is: Waiting for SLRU data to reach durable storage during a checkpoint or database shutdown. PostgreSQL reports SlruFlushSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/slru.c:1606 —
WAIT_EVENT_SLRU_FLUSH_SYNC - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:679 —
SLRUFlushSync - PostgreSQL 18.6 · src/backend/access/transam/slru.c:1843 —
WAIT_EVENT_SLRU_FLUSH_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:246 —
SLRU_FLUSH_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.57 - IO: SlruRead
SlruRead
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a read of an SLRU page
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/SLRURead (PG 13-16)
Trigger mechanism
WAIT_EVENT_SLRU_READ at src/backend/access/transam/slru.c:721 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:682. The instrumented operation is: Waiting for a read of an SLRU page. PostgreSQL reports SlruRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/slru.c:721 —
WAIT_EVENT_SLRU_READ - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:682 —
SLRURead - PostgreSQL 18.6 · src/backend/access/transam/slru.c:840 —
WAIT_EVENT_SLRU_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:247 —
SLRU_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.58 - IO: SlruSync
SlruSync
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for SLRU data to reach durable storage following a page write
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/SLRUSync (PG 13-16)
Trigger mechanism
WAIT_EVENT_SLRU_SYNC at src/backend/access/transam/slru.c:900 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:685. The instrumented operation is: Waiting for SLRU data to reach durable storage following a page write. PostgreSQL reports SlruSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/slru.c:900 —
WAIT_EVENT_SLRU_SYNC - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:685 —
SLRUSync - PostgreSQL 18.6 · src/backend/access/transam/slru.c:1016 —
WAIT_EVENT_SLRU_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:248 —
SLRU_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.59 - IO: SlruWrite
SlruWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a write of an SLRU page
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/SLRUWrite (PG 13-16)
Trigger mechanism
WAIT_EVENT_SLRU_WRITE at src/backend/access/transam/slru.c:876 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:688. The instrumented operation is: Waiting for a write of an SLRU page. PostgreSQL reports SlruWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/slru.c:876 —
WAIT_EVENT_SLRU_WRITE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:688 —
SLRUWrite - PostgreSQL 18.6 · src/backend/access/transam/slru.c:992 —
WAIT_EVENT_SLRU_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:249 —
SLRU_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.60 - IO: SnapbuildRead
SnapbuildRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read of a serialized historical catalog snapshot
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_SNAPBUILD_READ at src/backend/replication/logical/snapbuild.c:1937 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:250. The instrumented operation is: Waiting for a read of a serialized historical catalog snapshot. PostgreSQL reports SnapbuildRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/snapbuild.c:1937 —
WAIT_EVENT_SNAPBUILD_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:250 —
SNAPBUILD_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.61 - IO: SnapbuildSync
SnapbuildSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a serialized historical catalog snapshot to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_SNAPBUILD_SYNC at src/backend/replication/logical/snapbuild.c:1680 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:251. The instrumented operation is: Waiting for a serialized historical catalog snapshot to reach durable storage. PostgreSQL reports SnapbuildSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/snapbuild.c:1680 —
WAIT_EVENT_SNAPBUILD_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:251 —
SNAPBUILD_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.62 - IO: SnapbuildWrite
SnapbuildWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write of a serialized historical catalog snapshot
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_SNAPBUILD_WRITE at src/backend/replication/logical/snapbuild.c:1654 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:252. The instrumented operation is: Waiting for a write of a serialized historical catalog snapshot. PostgreSQL reports SnapbuildWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/snapbuild.c:1654 —
WAIT_EVENT_SNAPBUILD_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:252 —
SNAPBUILD_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.63 - IO: TimelineHistoryFileSync
TimelineHistoryFileSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a timeline history file received via streaming replication to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_TIMELINE_HISTORY_FILE_SYNC at src/backend/access/transam/timeline.c:502 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:253. The instrumented operation is: Waiting for a timeline history file received via streaming replication to reach durable storage. PostgreSQL reports TimelineHistoryFileSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/timeline.c:502 —
WAIT_EVENT_TIMELINE_HISTORY_FILE_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:253 —
TIMELINE_HISTORY_FILE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.64 - IO: TimelineHistoryFileWrite
TimelineHistoryFileWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write of a timeline history file received via streaming replication
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_TIMELINE_HISTORY_FILE_WRITE at src/backend/access/transam/timeline.c:484 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:254. The instrumented operation is: Waiting for a write of a timeline history file received via streaming replication. PostgreSQL reports TimelineHistoryFileWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/timeline.c:484 —
WAIT_EVENT_TIMELINE_HISTORY_FILE_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:254 —
TIMELINE_HISTORY_FILE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.65 - IO: TimelineHistoryRead
TimelineHistoryRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read of a timeline history file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_TIMELINE_HISTORY_READ at src/backend/access/transam/timeline.c:135 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:255. The instrumented operation is: Waiting for a read of a timeline history file. PostgreSQL reports TimelineHistoryRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/timeline.c:135 —
WAIT_EVENT_TIMELINE_HISTORY_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:255 —
TIMELINE_HISTORY_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.66 - IO: TimelineHistorySync
TimelineHistorySync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a newly created timeline history file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_TIMELINE_HISTORY_SYNC at src/backend/access/transam/timeline.c:428 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:256. The instrumented operation is: Waiting for a newly created timeline history file to reach durable storage. PostgreSQL reports TimelineHistorySync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/timeline.c:428 —
WAIT_EVENT_TIMELINE_HISTORY_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:256 —
TIMELINE_HISTORY_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.67 - IO: TimelineHistoryWrite
TimelineHistoryWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write of a newly created timeline history file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_TIMELINE_HISTORY_WRITE at src/backend/access/transam/timeline.c:366 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:257. The instrumented operation is: Waiting for a write of a newly created timeline history file. PostgreSQL reports TimelineHistoryWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/timeline.c:366 —
WAIT_EVENT_TIMELINE_HISTORY_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:257 —
TIMELINE_HISTORY_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.68 - IO: TwophaseFileRead
TwophaseFileRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a read of a two phase state file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_TWOPHASE_FILE_READ at src/backend/access/transam/twophase.c:1347 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:258. The instrumented operation is: Waiting for a read of a two phase state file. PostgreSQL reports TwophaseFileRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/twophase.c:1347 —
WAIT_EVENT_TWOPHASE_FILE_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:258 —
TWOPHASE_FILE_READ
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.69 - IO: TwophaseFileSync
TwophaseFileSync
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a two phase state file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_TWOPHASE_FILE_SYNC at src/backend/access/transam/twophase.c:1774 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:259. The instrumented operation is: Waiting for a two phase state file to reach durable storage. PostgreSQL reports TwophaseFileSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/twophase.c:1774 —
WAIT_EVENT_TWOPHASE_FILE_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:259 —
TWOPHASE_FILE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.70 - IO: TwophaseFileWrite
TwophaseFileWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a write of a two phase state file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_TWOPHASE_FILE_WRITE at src/backend/access/transam/twophase.c:1749 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:260. The instrumented operation is: Waiting for a write of a two phase state file. PostgreSQL reports TwophaseFileWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/twophase.c:1749 —
WAIT_EVENT_TWOPHASE_FILE_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:260 —
TWOPHASE_FILE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.71 - IO: VersionFileSync
VersionFileSync
VersionsPG 15-18
Evidence2 source location(s)
Official description
Waiting for the version file to reach durable storage while creating a database
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_VERSION_FILE_SYNC at src/backend/commands/dbcommands.c:511 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:261. The instrumented operation is: Waiting for the version file to reach durable storage while creating a database. PostgreSQL reports VersionFileSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/commands/dbcommands.c:511 —
WAIT_EVENT_VERSION_FILE_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:261 —
VERSION_FILE_SYNC
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.72 - IO: VersionFileWrite
VersionFileWrite
VersionsPG 15-18
Evidence2 source location(s)
Official description
Waiting for the version file to be written while creating a database
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_VERSION_FILE_WRITE at src/backend/commands/dbcommands.c:498 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:262. The instrumented operation is: Waiting for the version file to be written while creating a database. PostgreSQL reports VersionFileWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/commands/dbcommands.c:498 —
WAIT_EVENT_VERSION_FILE_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:262 —
VERSION_FILE_WRITE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:io_read_time] · [metric:io_write_time]
6.73 - IO: WalBootstrapSync
WalBootstrapSync
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for WAL to reach durable storage during bootstrapping
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALBootstrapSync (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_BOOTSTRAP_SYNC at src/backend/access/transam/xlog.c:4776 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:733. The instrumented operation is: Waiting for WAL to reach durable storage during bootstrapping. PostgreSQL reports WalBootstrapSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:4776 —
WAIT_EVENT_WAL_BOOTSTRAP_SYNC - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:733 —
WALBootstrapSync - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:5198 —
WAIT_EVENT_WAL_BOOTSTRAP_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:264 —
WAL_BOOTSTRAP_SYNC
Related controls and signals
6.74 - IO: WalBootstrapWrite
WalBootstrapWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a write of a WAL page during bootstrapping
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALBootstrapWrite (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_BOOTSTRAP_WRITE at src/backend/access/transam/xlog.c:4764 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:736. The instrumented operation is: Waiting for a write of a WAL page during bootstrapping. PostgreSQL reports WalBootstrapWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:4764 —
WAIT_EVENT_WAL_BOOTSTRAP_WRITE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:736 —
WALBootstrapWrite - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:5186 —
WAIT_EVENT_WAL_BOOTSTRAP_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:265 —
WAL_BOOTSTRAP_WRITE
Related controls and signals
6.75 - IO: WalCopyRead
WalCopyRead
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a read when creating a new WAL segment by copying an existing one
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALCopyRead (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_COPY_READ at src/backend/access/transam/xlog.c:3190 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:739. The instrumented operation is: Waiting for a read when creating a new WAL segment by copying an existing one. PostgreSQL reports WalCopyRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:3190 —
WAIT_EVENT_WAL_COPY_READ - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:739 —
WALCopyRead - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:3471 —
WAIT_EVENT_WAL_COPY_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:266 —
WAL_COPY_READ
Related controls and signals
6.76 - IO: WalCopySync
WalCopySync
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a new WAL segment created by copying an existing one to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALCopySync (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_COPY_SYNC at src/backend/access/transam/xlog.c:3227 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:742. The instrumented operation is: Waiting for a new WAL segment created by copying an existing one to reach durable storage. PostgreSQL reports WalCopySync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:3227 —
WAIT_EVENT_WAL_COPY_SYNC - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:742 —
WALCopySync - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:3508 —
WAIT_EVENT_WAL_COPY_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:267 —
WAL_COPY_SYNC
Related controls and signals
6.77 - IO: WalCopyWrite
WalCopyWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a write when creating a new WAL segment by copying an existing one
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALCopyWrite (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_COPY_WRITE at src/backend/access/transam/xlog.c:3208 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:745. The instrumented operation is: Waiting for a write when creating a new WAL segment by copying an existing one. PostgreSQL reports WalCopyWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:3208 —
WAIT_EVENT_WAL_COPY_WRITE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:745 —
WALCopyWrite - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:3489 —
WAIT_EVENT_WAL_COPY_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:268 —
WAL_COPY_WRITE
Related controls and signals
6.78 - IO: WalInitSync
WalInitSync
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a newly initialized WAL file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALInitSync (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_INIT_SYNC at src/backend/access/transam/xlog.c:3028 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:748. The instrumented operation is: Waiting for a newly initialized WAL file to reach durable storage. PostgreSQL reports WalInitSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:3028 —
WAIT_EVENT_WAL_INIT_SYNC - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:748 —
WALInitSync - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:3306 —
WAIT_EVENT_WAL_INIT_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:269 —
WAL_INIT_SYNC
Related controls and signals
6.79 - IO: WalInitWrite
WalInitWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a write while initializing a new WAL file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALInitWrite (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_INIT_WRITE at src/backend/access/transam/xlog.c:2977 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:751. The instrumented operation is: Waiting for a write while initializing a new WAL file. PostgreSQL reports WalInitWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:2977 —
WAIT_EVENT_WAL_INIT_WRITE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:751 —
WALInitWrite - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:3244 —
WAIT_EVENT_WAL_INIT_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:270 —
WAL_INIT_WRITE
Related controls and signals
6.80 - IO: WalRead
WalRead
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a read from a WAL file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALRead (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_READ at src/backend/access/transam/xlogreader.c:1570 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:754. The instrumented operation is: Waiting for a read from a WAL file. PostgreSQL reports WalRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlogreader.c:1570 —
WAIT_EVENT_WAL_READ - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:754 —
WALRead - PostgreSQL 18.6 · src/backend/access/transam/xlogreader.c:1572 —
WAIT_EVENT_WAL_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:271 —
WAL_READ
Related controls and signals
6.81 - IO: WalSummaryRead
WalSummaryRead
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting for a read from a WAL summary file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_SUMMARY_READ at src/backend/backup/walsummary.c:279 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:272. The instrumented operation is: Waiting for a read from a WAL summary file. PostgreSQL reports WalSummaryRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/backup/walsummary.c:279 —
WAIT_EVENT_WAL_SUMMARY_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:272 —
WAL_SUMMARY_READ
Related controls and signals
6.82 - IO: WalSummaryWrite
WalSummaryWrite
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting for a write to a WAL summary file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_SUMMARY_WRITE at src/backend/backup/walsummary.c:300 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:273. The instrumented operation is: Waiting for a write to a WAL summary file. PostgreSQL reports WalSummaryWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 18.6 · src/backend/backup/walsummary.c:300 —
WAIT_EVENT_WAL_SUMMARY_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:273 —
WAL_SUMMARY_WRITE
Related controls and signals
6.83 - IO: WalSync
WalSync
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a WAL file to reach durable storage
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALSync (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_SYNC at src/backend/access/transam/xlog.c:8303 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:757. The instrumented operation is: Waiting for a WAL file to reach durable storage. PostgreSQL reports WalSync around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:8303 —
WAIT_EVENT_WAL_SYNC - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:757 —
WALSync - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:8767 —
WAIT_EVENT_WAL_SYNC - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:274 —
WAL_SYNC
Related controls and signals
6.84 - IO: WalSyncMethodAssign
WalSyncMethodAssign
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for data to reach durable storage while assigning a new WAL sync method
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALSyncMethodAssign (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN at src/backend/access/transam/xlog.c:8251 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:760. The instrumented operation is: Waiting for data to reach durable storage while assigning a new WAL sync method. PostgreSQL reports WalSyncMethodAssign around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:8251 —
WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:760 —
WALSyncMethodAssign - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:8716 —
WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:275 —
WAL_SYNC_METHOD_ASSIGN
Related controls and signals
6.85 - IO: WalWrite
WalWrite
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a write to a WAL file
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALWrite (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_WRITE at src/backend/access/transam/xlog.c:2200 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:763. The instrumented operation is: Waiting for a write to a WAL file. PostgreSQL reports WalWrite around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/xlog.c:2200 —
WAIT_EVENT_WAL_WRITE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:763 —
WALWrite - PostgreSQL 18.6 · src/backend/access/transam/xlog.c:2433 —
WAIT_EVENT_WAL_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:276 —
WAL_WRITE
Related controls and signals
6.86 - IO: WalsenderTimelineHistoryRead
WalsenderTimelineHistoryRead
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for a read from a timeline history file during a walsender timeline command
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IO/WALSenderTimelineHistoryRead (PG 13-16)
Trigger mechanism
WAIT_EVENT_WALSENDER_TIMELINE_HISTORY_READ at src/backend/replication/walsender.c:654 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:730. The instrumented operation is: Waiting for a read from a timeline history file during a walsender timeline command. PostgreSQL reports WalsenderTimelineHistoryRead around the instrumented file or asynchronous-I/O operation named by this event. The backend resumes after the kernel, storage stack, or I/O worker completes that step.
Normal or trouble?
- Normal: The wait is normal when the workload is expected to perform this read, write, sync, allocation, or completion operation at the observed rate.
- Investigate: Investigate when it persists with foreground latency, many concurrent waiters, storage tail latency, throttling, or errors.
Diagnostic SQL
Response
- Confirm the workload phase should touch this file class.
- Correlate with pg_stat_io where available and per-device latency.
- Fix the access path, burst shape, or affected storage tier before tuning unrelated memory settings.
Source evidence
- PostgreSQL 16.15 · src/backend/replication/walsender.c:654 —
WAIT_EVENT_WALSENDER_TIMELINE_HISTORY_READ - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:730 —
WALSenderTimelineHistoryRead - PostgreSQL 18.6 · src/backend/replication/walsender.c:637 —
WAIT_EVENT_WALSENDER_TIMELINE_HISTORY_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:263 —
WALSENDER_TIMELINE_HISTORY_READ
Related controls and signals
7 - IPC waits
IPC is coordination: this process has reached a point that depends on another PostgreSQL process or execution participant. The peer may be a parallel worker, WAL receiver, checkpointer, archiver, replication process, or another backend in a shared-memory protocol.
Find the missing peer or phase
The waiter is often healthy. Ask which participant is expected to signal it and inspect that participant’s state. Parallel-query events should be read as a phase diagram; replication events as a sender/receiver pipeline; checkpoint events as a cluster-wide barrier.
- Normal: brief rendezvous in parallel plans, checkpoint start/completion, worker startup, or synchronous replication.
- Watch: a foreground waiter remains in the same phase across three samples while its peer makes no visible progress.
- Urgent: the peer has exited or is blocked, a queue cannot drain, replication/failover is stalled, or many sessions depend on one stuck coordinator.
Events to recognize
| Event | Peer or phase |
|---|---|
| BufferIo | Another backend performing I/O for the shared buffer |
| ExecuteGather | Child processes feeding a Gather node |
| ParallelFinish | Parallel workers reaching plan completion |
| CheckpointDone | Checkpointer completing a requested checkpoint |
| SyncRep | Remote synchronous standby acknowledgement |
| WalReceiverWaitStart | Startup process waiting for streaming data |
| MessageQueueReceive | Shared-memory message queue producer |
| RecoveryPause | Recovery intentionally paused by operator policy |
Common misreads
- Killing the waiter does not repair a dead or blocked peer.
IPC/SyncRepis acknowledgement latency;LWLock/SyncRepis contention on shared queue/state metadata.- Many parallel wait names are expected barriers. The question is whether every participant eventually advances.
RecoveryPausecan be entirely intentional; checkpg_is_wal_replay_paused()before treating it as failure.
7.1 - IPC: AppendReady
AppendReady
VersionsPG 14-18
Evidence2 source location(s)
Official description
Waiting for subplan nodes of an Append plan node to be ready
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_APPEND_READY at src/backend/executor/nodeAppend.c:1079 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:106. The instrumented operation is: Waiting for subplan nodes of an Append plan node to be ready. The AppendReady path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeAppend.c:1079 —
WAIT_EVENT_APPEND_READY - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:106 —
APPEND_READY
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.2 - IPC: ArchiveCleanupCommand
ArchiveCleanupCommand
VersionsPG 15-18
Evidence2 source location(s)
Official description
Waiting for archive_cleanup_command to complete
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_ARCHIVE_CLEANUP_COMMAND at src/backend/access/transam/xlog.c:7885 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:107. The instrumented operation is: Waiting for archive_cleanup_command to complete. The ArchiveCleanupCommand path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:7885 —
WAIT_EVENT_ARCHIVE_CLEANUP_COMMAND - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:107 —
ARCHIVE_CLEANUP_COMMAND
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.3 - IPC: ArchiveCommand
ArchiveCommand
VersionsPG 15-18
Evidence2 source location(s)
Official description
Waiting for archive_command to complete
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_ARCHIVE_COMMAND at src/backend/archive/shell_archive.c:79 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:108. The instrumented operation is: Waiting for archive_command to complete. The ArchiveCommand path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/archive/shell_archive.c:79 —
WAIT_EVENT_ARCHIVE_COMMAND - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:108 —
ARCHIVE_COMMAND
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.4 - IPC: BackendTermination
BackendTermination
VersionsPG 14-18
Evidence2 source location(s)
Official description
Waiting for the termination of another backend
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_BACKEND_TERMINATION at src/backend/storage/ipc/signalfuncs.c:210 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:109. The instrumented operation is: Waiting for the termination of another backend. The BackendTermination path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/signalfuncs.c:210 —
WAIT_EVENT_BACKEND_TERMINATION - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:109 —
BACKEND_TERMINATION
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.5 - IPC: BackupWaitWalArchive
BackupWaitWalArchive
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for WAL files required for a backup to be successfully archived
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE at src/backend/access/transam/xlog.c:9405 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:110. The instrumented operation is: Waiting for WAL files required for a backup to be successfully archived. The BackupWaitWalArchive path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:9405 —
WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:110 —
BACKUP_WAIT_WAL_ARCHIVE
Related controls and signals
7.6 - IPC: BgworkerShutdown
BgworkerShutdown
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for background worker to shut down
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IPC/BgWorkerShutdown (PG 13-16)
Trigger mechanism
WAIT_EVENT_BGWORKER_SHUTDOWN at src/backend/postmaster/bgworker.c:1188 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:329. The instrumented operation is: Waiting for background worker to shut down. The BgworkerShutdown path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 16.15 · src/backend/postmaster/bgworker.c:1188 —
WAIT_EVENT_BGWORKER_SHUTDOWN - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:329 —
BgWorkerShutdown - PostgreSQL 18.6 · src/backend/postmaster/bgworker.c:1275 —
WAIT_EVENT_BGWORKER_SHUTDOWN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:111 —
BGWORKER_SHUTDOWN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.7 - IPC: BgworkerStartup
BgworkerStartup
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for background worker to start up
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IPC/BgWorkerStartup (PG 13-16)
Trigger mechanism
WAIT_EVENT_BGWORKER_STARTUP at src/backend/access/transam/parallel.c:771 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:332. The instrumented operation is: Waiting for background worker to start up. The BgworkerStartup path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 16.15 · src/backend/access/transam/parallel.c:771 —
WAIT_EVENT_BGWORKER_STARTUP - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:332 —
BgWorkerStartup - PostgreSQL 18.6 · src/backend/access/transam/parallel.c:775 —
WAIT_EVENT_BGWORKER_STARTUP - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:112 —
BGWORKER_STARTUP
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.8 - IPC: BtreePage
BtreePage
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for the page number needed to continue a parallel B-tree scan to become available
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_BTREE_PAGE at src/backend/access/nbtree/nbtree.c:927 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:113. The instrumented operation is: Waiting for the page number needed to continue a parallel B-tree scan to become available. The BtreePage path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/nbtree/nbtree.c:927 —
WAIT_EVENT_BTREE_PAGE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:113 —
BTREE_PAGE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.9 - IPC: BufferIo
BufferIo
VersionsPG 17-18
Evidence7 source location(s)
Official description
Waiting for buffer I/O to complete
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IPC/BufferIO (PG 14-16), LWLock/BufferIO (PG 13)
Trigger mechanism
pgstat_report_wait_start at src/backend/storage/lmgr/lwlock.c:765 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/access/transam/xact.c:2627. The instrumented operation is: Waiting for buffer I/O to complete. The BufferIo path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 13.23 · src/backend/access/transam/xact.c:2627 —
BufferIO - PostgreSQL 13.23 · src/backend/storage/lmgr/lwlock.c:150 —
BufferIO - PostgreSQL 13.23 · src/backend/storage/lmgr/lwlock.c:765 —
pgstat_report_wait_start - PostgreSQL 16.15 · src/backend/storage/buffer/bufmgr.c:5167 —
WAIT_EVENT_BUFFER_IO
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.10 - IPC: CheckpointDelayComplete
CheckpointDelayComplete
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting for a backend that blocks a checkpoint from completing
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CHECKPOINT_DELAY_COMPLETE at src/backend/access/transam/xlog.c:7228 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:115. The instrumented operation is: Waiting for a backend that blocks a checkpoint from completing. The CheckpointDelayComplete path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:7228 —
WAIT_EVENT_CHECKPOINT_DELAY_COMPLETE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:115 —
CHECKPOINT_DELAY_COMPLETE
Related controls and signals
7.11 - IPC: CheckpointDelayStart
CheckpointDelayStart
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting for a backend that blocks a checkpoint from starting
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CHECKPOINT_DELAY_START at src/backend/access/transam/xlog.c:7211 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:116. The instrumented operation is: Waiting for a backend that blocks a checkpoint from starting. The CheckpointDelayStart path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:7211 —
WAIT_EVENT_CHECKPOINT_DELAY_START - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:116 —
CHECKPOINT_DELAY_START
Related controls and signals
7.12 - IPC: CheckpointDone
CheckpointDone
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a checkpoint to complete
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CHECKPOINT_DONE at src/backend/postmaster/checkpointer.c:1121 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:117. The instrumented operation is: Waiting for a checkpoint to complete. The CheckpointDone path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/checkpointer.c:1121 —
WAIT_EVENT_CHECKPOINT_DONE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:117 —
CHECKPOINT_DONE
Related controls and signals
7.13 - IPC: CheckpointStart
CheckpointStart
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a checkpoint to start
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CHECKPOINT_START at src/backend/postmaster/checkpointer.c:1100 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:118. The instrumented operation is: Waiting for a checkpoint to start. The CheckpointStart path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/checkpointer.c:1100 —
WAIT_EVENT_CHECKPOINT_START - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:118 —
CHECKPOINT_START
Related controls and signals
7.14 - IPC: ExecuteGather
ExecuteGather
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for activity from a child process while executing a Gather plan node
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_EXECUTE_GATHER at src/backend/executor/nodeGather.c:386 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:119. The instrumented operation is: Waiting for activity from a child process while executing a Gather plan node. The ExecuteGather path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeGather.c:386 —
WAIT_EVENT_EXECUTE_GATHER - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:119 —
EXECUTE_GATHER
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.15 - IPC: HashBatchAllocate
HashBatchAllocate
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for an elected Parallel Hash participant to allocate a hash table
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_BATCH_ALLOCATE at src/backend/executor/nodeHashjoin.c:1321 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:120. The instrumented operation is: Waiting for an elected Parallel Hash participant to allocate a hash table. The HashBatchAllocate path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHashjoin.c:1321 —
WAIT_EVENT_HASH_BATCH_ALLOCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:120 —
HASH_BATCH_ALLOCATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.16 - IPC: HashBatchElect
HashBatchElect
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to elect a Parallel Hash participant to allocate a hash table
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_BATCH_ELECT at src/backend/executor/nodeHashjoin.c:1314 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:121. The instrumented operation is: Waiting to elect a Parallel Hash participant to allocate a hash table. The HashBatchElect path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHashjoin.c:1314 —
WAIT_EVENT_HASH_BATCH_ELECT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:121 —
HASH_BATCH_ELECT
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.17 - IPC: HashBatchLoad
HashBatchLoad
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for other Parallel Hash participants to finish loading a hash table
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_BATCH_LOAD at src/backend/executor/nodeHashjoin.c:1341 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:122. The instrumented operation is: Waiting for other Parallel Hash participants to finish loading a hash table. The HashBatchLoad path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHashjoin.c:1341 —
WAIT_EVENT_HASH_BATCH_LOAD - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:122 —
HASH_BATCH_LOAD
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.18 - IPC: HashBuildAllocate
HashBuildAllocate
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for an elected Parallel Hash participant to allocate the initial hash table
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_BUILD_ALLOCATE at src/backend/executor/nodeHash.c:261 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:123. The instrumented operation is: Waiting for an elected Parallel Hash participant to allocate the initial hash table. The HashBuildAllocate path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:261 —
WAIT_EVENT_HASH_BUILD_ALLOCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:123 —
HASH_BUILD_ALLOCATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.19 - IPC: HashBuildElect
HashBuildElect
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to elect a Parallel Hash participant to allocate the initial hash table
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_BUILD_ELECT at src/backend/executor/nodeHash.c:598 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:124. The instrumented operation is: Waiting to elect a Parallel Hash participant to allocate the initial hash table. The HashBuildElect path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:598 —
WAIT_EVENT_HASH_BUILD_ELECT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:124 —
HASH_BUILD_ELECT
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.20 - IPC: HashBuildHashInner
HashBuildHashInner
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for other Parallel Hash participants to finish hashing the inner relation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_BUILD_HASH_INNER at src/backend/executor/nodeHash.c:324 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:125. The instrumented operation is: Waiting for other Parallel Hash participants to finish hashing the inner relation. The HashBuildHashInner path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:324 —
WAIT_EVENT_HASH_BUILD_HASH_INNER - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:125 —
HASH_BUILD_HASH_INNER
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.21 - IPC: HashBuildHashOuter
HashBuildHashOuter
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for other Parallel Hash participants to finish partitioning the outer relation
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_BUILD_HASH_OUTER at src/backend/executor/nodeHashjoin.c:397 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:126. The instrumented operation is: Waiting for other Parallel Hash participants to finish partitioning the outer relation. The HashBuildHashOuter path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHashjoin.c:397 —
WAIT_EVENT_HASH_BUILD_HASH_OUTER - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:126 —
HASH_BUILD_HASH_OUTER
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.22 - IPC: HashGrowBatchesDecide
HashGrowBatchesDecide
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to elect a Parallel Hash participant to decide on future batch growth
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_GROW_BATCHES_DECIDE at src/backend/executor/nodeHash.c:1363 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:127. The instrumented operation is: Waiting to elect a Parallel Hash participant to decide on future batch growth. The HashGrowBatchesDecide path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:1363 —
WAIT_EVENT_HASH_GROW_BATCHES_DECIDE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:127 —
HASH_GROW_BATCHES_DECIDE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.23 - IPC: HashGrowBatchesElect
HashGrowBatchesElect
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to elect a Parallel Hash participant to allocate more batches
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_GROW_BATCHES_ELECT at src/backend/executor/nodeHash.c:1220 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:128. The instrumented operation is: Waiting to elect a Parallel Hash participant to allocate more batches. The HashGrowBatchesElect path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:1220 —
WAIT_EVENT_HASH_GROW_BATCHES_ELECT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:128 —
HASH_GROW_BATCHES_ELECT
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.24 - IPC: HashGrowBatchesFinish
HashGrowBatchesFinish
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for an elected Parallel Hash participant to decide on future batch growth
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_GROW_BATCHES_FINISH at src/backend/executor/nodeHash.c:1420 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:129. The instrumented operation is: Waiting for an elected Parallel Hash participant to decide on future batch growth. The HashGrowBatchesFinish path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:1420 —
WAIT_EVENT_HASH_GROW_BATCHES_FINISH - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:129 —
HASH_GROW_BATCHES_FINISH
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.25 - IPC: HashGrowBatchesReallocate
HashGrowBatchesReallocate
VersionsPG 16-18
Evidence4 source location(s)
Official description
Waiting for an elected Parallel Hash participant to allocate more batches
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Earlier names: IPC/HashGrowBatchesAllocate (PG 13-15)
Trigger mechanism
WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE at src/backend/executor/nodeHash.c:1229 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:368. The instrumented operation is: Waiting for an elected Parallel Hash participant to allocate more batches. The HashGrowBatchesReallocate path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 15.19 · src/backend/executor/nodeHash.c:1229 —
WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE - PostgreSQL 15.19 · src/backend/utils/activity/wait_event.c:368 —
HashGrowBatchesAllocate - PostgreSQL 18.6 · src/backend/executor/nodeHash.c:1339 —
WAIT_EVENT_HASH_GROW_BATCHES_REALLOCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:130 —
HASH_GROW_BATCHES_REALLOCATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.26 - IPC: HashGrowBatchesRepartition
HashGrowBatchesRepartition
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for other Parallel Hash participants to finish repartitioning
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION at src/backend/executor/nodeHash.c:1352 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:131. The instrumented operation is: Waiting for other Parallel Hash participants to finish repartitioning. The HashGrowBatchesRepartition path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:1352 —
WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:131 —
HASH_GROW_BATCHES_REPARTITION
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.27 - IPC: HashGrowBucketsElect
HashGrowBucketsElect
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to elect a Parallel Hash participant to allocate more buckets
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_GROW_BUCKETS_ELECT at src/backend/executor/nodeHash.c:1669 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:132. The instrumented operation is: Waiting to elect a Parallel Hash participant to allocate more buckets. The HashGrowBucketsElect path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:1669 —
WAIT_EVENT_HASH_GROW_BUCKETS_ELECT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:132 —
HASH_GROW_BUCKETS_ELECT
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.28 - IPC: HashGrowBucketsReallocate
HashGrowBucketsReallocate
VersionsPG 16-18
Evidence4 source location(s)
Official description
Waiting for an elected Parallel Hash participant to finish allocating more buckets
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Earlier names: IPC/HashGrowBucketsAllocate (PG 13-15)
Trigger mechanism
WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE at src/backend/executor/nodeHash.c:1588 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:383. The instrumented operation is: Waiting for an elected Parallel Hash participant to finish allocating more buckets. The HashGrowBucketsReallocate path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 15.19 · src/backend/executor/nodeHash.c:1588 —
WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE - PostgreSQL 15.19 · src/backend/utils/activity/wait_event.c:383 —
HashGrowBucketsAllocate - PostgreSQL 18.6 · src/backend/executor/nodeHash.c:1698 —
WAIT_EVENT_HASH_GROW_BUCKETS_REALLOCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:133 —
HASH_GROW_BUCKETS_REALLOCATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.29 - IPC: HashGrowBucketsReinsert
HashGrowBucketsReinsert
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for other Parallel Hash participants to finish inserting tuples into new buckets
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT at src/backend/executor/nodeHash.c:1733 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:134. The instrumented operation is: Waiting for other Parallel Hash participants to finish inserting tuples into new buckets. The HashGrowBucketsReinsert path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeHash.c:1733 —
WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:134 —
HASH_GROW_BUCKETS_REINSERT
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.30 - IPC: LogicalApplySendData
LogicalApplySendData
VersionsPG 16-18
Evidence2 source location(s)
Official description
Waiting for a logical replication leader apply process to send data to a parallel apply process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_APPLY_SEND_DATA at src/backend/replication/logical/applyparallelworker.c:1204 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:135. The instrumented operation is: Waiting for a logical replication leader apply process to send data to a parallel apply process. The LogicalApplySendData path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/applyparallelworker.c:1204 —
WAIT_EVENT_LOGICAL_APPLY_SEND_DATA - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:135 —
LOGICAL_APPLY_SEND_DATA
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.31 - IPC: LogicalParallelApplyStateChange
LogicalParallelApplyStateChange
VersionsPG 16-18
Evidence2 source location(s)
Official description
Waiting for a logical replication parallel apply process to change state
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_PARALLEL_APPLY_STATE_CHANGE at src/backend/replication/logical/applyparallelworker.c:1276 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:136. The instrumented operation is: Waiting for a logical replication parallel apply process to change state. The LogicalParallelApplyStateChange path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/applyparallelworker.c:1276 —
WAIT_EVENT_LOGICAL_PARALLEL_APPLY_STATE_CHANGE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:136 —
LOGICAL_PARALLEL_APPLY_STATE_CHANGE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.32 - IPC: LogicalSyncData
LogicalSyncData
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a logical replication remote server to send data for initial table synchronization
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_SYNC_DATA at src/backend/replication/logical/tablesync.c:807 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:137. The instrumented operation is: Waiting for a logical replication remote server to send data for initial table synchronization. The LogicalSyncData path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/tablesync.c:807 —
WAIT_EVENT_LOGICAL_SYNC_DATA - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:137 —
LOGICAL_SYNC_DATA
Related controls and signals
7.33 - IPC: LogicalSyncStateChange
LogicalSyncStateChange
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a logical replication remote server to change state
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE at src/backend/replication/logical/tablesync.c:214 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:138. The instrumented operation is: Waiting for a logical replication remote server to change state. The LogicalSyncStateChange path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/tablesync.c:214 —
WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:138 —
LOGICAL_SYNC_STATE_CHANGE
Related controls and signals
7.34 - IPC: MessageQueueInternal
MessageQueueInternal
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for another process to be attached to a shared message queue
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_MESSAGE_QUEUE_INTERNAL at src/backend/storage/ipc/shm_mq.c:1254 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:139. The instrumented operation is: Waiting for another process to be attached to a shared message queue. The MessageQueueInternal path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/shm_mq.c:1254 —
WAIT_EVENT_MESSAGE_QUEUE_INTERNAL - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:139 —
MESSAGE_QUEUE_INTERNAL
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.35 - IPC: MessageQueuePutMessage
MessageQueuePutMessage
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to write a protocol message to a shared message queue
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_MESSAGE_QUEUE_PUT_MESSAGE at src/backend/libpq/pqmq.c:185 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:140. The instrumented operation is: Waiting to write a protocol message to a shared message queue. The MessageQueuePutMessage path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/libpq/pqmq.c:185 —
WAIT_EVENT_MESSAGE_QUEUE_PUT_MESSAGE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:140 —
MESSAGE_QUEUE_PUT_MESSAGE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.36 - IPC: MessageQueueReceive
MessageQueueReceive
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to receive bytes from a shared message queue
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_MESSAGE_QUEUE_RECEIVE at src/backend/storage/ipc/shm_mq.c:1165 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:141. The instrumented operation is: Waiting to receive bytes from a shared message queue. The MessageQueueReceive path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/shm_mq.c:1165 —
WAIT_EVENT_MESSAGE_QUEUE_RECEIVE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:141 —
MESSAGE_QUEUE_RECEIVE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.37 - IPC: MessageQueueSend
MessageQueueSend
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to send bytes to a shared message queue
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_MESSAGE_QUEUE_SEND at src/backend/storage/ipc/shm_mq.c:1019 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:142. The instrumented operation is: Waiting to send bytes to a shared message queue. The MessageQueueSend path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/shm_mq.c:1019 —
WAIT_EVENT_MESSAGE_QUEUE_SEND - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:142 —
MESSAGE_QUEUE_SEND
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.38 - IPC: MultixactCreation
MultixactCreation
VersionsPG 17-18
Evidence1 source location(s)
Official description
Waiting for a multixact creation to complete
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
The catalog identity is present, but source audit found no live reporter in 17.8+, 18.2+. Known active ranges: 17.0-17.7, 18.0-18.1. The definition location below is retained as negative evidence; this exact release cannot emit the event from a core code path. Evidence: PostgreSQL 17.8 release note, PostgreSQL 18.2 release note.
Normal or trouble?
- Normal: No live core occurrence is expected on the audited release.
- Investigate: If telemetry shows it, verify the exact patch version, extension origin, and whether the sample is stale or came from a different server.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:143 —
MULTIXACT_CREATION
Related controls and signals
7.39 - IPC: ParallelBitmapScan
ParallelBitmapScan
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for parallel bitmap scan to become initialized
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_PARALLEL_BITMAP_SCAN at src/backend/executor/nodeBitmapHeapscan.c:437 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:144. The instrumented operation is: Waiting for parallel bitmap scan to become initialized. The ParallelBitmapScan path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/executor/nodeBitmapHeapscan.c:437 —
WAIT_EVENT_PARALLEL_BITMAP_SCAN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:144 —
PARALLEL_BITMAP_SCAN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.40 - IPC: ParallelCreateIndexScan
ParallelCreateIndexScan
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for parallel CREATE INDEX workers to finish heap scan
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_PARALLEL_CREATE_INDEX_SCAN at src/backend/access/brin/brin.c:2600 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:145. The instrumented operation is: Waiting for parallel CREATE INDEX workers to finish heap scan. The ParallelCreateIndexScan path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/brin/brin.c:2600 —
WAIT_EVENT_PARALLEL_CREATE_INDEX_SCAN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:145 —
PARALLEL_CREATE_INDEX_SCAN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.41 - IPC: ParallelFinish
ParallelFinish
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for parallel workers to finish computing
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_PARALLEL_FINISH at src/backend/access/transam/parallel.c:894 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:146. The instrumented operation is: Waiting for parallel workers to finish computing. The ParallelFinish path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/parallel.c:894 —
WAIT_EVENT_PARALLEL_FINISH - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:146 —
PARALLEL_FINISH
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.42 - IPC: ProcSignalBarrier
ProcSignalBarrier
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a barrier event to be processed by all backends
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_PROC_SIGNAL_BARRIER at src/backend/storage/ipc/procsignal.c:458 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:148. The instrumented operation is: Waiting for a barrier event to be processed by all backends. The ProcSignalBarrier path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/procsignal.c:458 —
WAIT_EVENT_PROC_SIGNAL_BARRIER - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:148 —
PROC_SIGNAL_BARRIER
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.43 - IPC: ProcarrayGroupUpdate
ProcarrayGroupUpdate
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for the group leader to clear the transaction ID at transaction end
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: IPC/ProcArrayGroupUpdate (PG 13-16)
Trigger mechanism
WAIT_EVENT_PROCARRAY_GROUP_UPDATE at src/backend/storage/ipc/procarray.c:829 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:428. The instrumented operation is: Waiting for the group leader to clear the transaction ID at transaction end. The ProcarrayGroupUpdate path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 16.15 · src/backend/storage/ipc/procarray.c:829 —
WAIT_EVENT_PROCARRAY_GROUP_UPDATE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:428 —
ProcArrayGroupUpdate - PostgreSQL 18.6 · src/backend/storage/ipc/procarray.c:827 —
WAIT_EVENT_PROCARRAY_GROUP_UPDATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:147 —
PROCARRAY_GROUP_UPDATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.44 - IPC: Promote
Promote
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for standby promotion
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_PROMOTE at src/backend/access/transam/xlogfuncs.c:731 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:149. The instrumented operation is: Waiting for standby promotion. The Promote path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlogfuncs.c:731 —
WAIT_EVENT_PROMOTE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:149 —
PROMOTE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.45 - IPC: RecoveryConflictSnapshot
RecoveryConflictSnapshot
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for recovery conflict resolution for a vacuum cleanup
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT at src/backend/storage/ipc/standby.c:493 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:150. The instrumented operation is: Waiting for recovery conflict resolution for a vacuum cleanup. The RecoveryConflictSnapshot path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/standby.c:493 —
WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:150 —
RECOVERY_CONFLICT_SNAPSHOT
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.46 - IPC: RecoveryConflictTablespace
RecoveryConflictTablespace
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for recovery conflict resolution for dropping a tablespace
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE at src/backend/storage/ipc/standby.c:564 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:151. The instrumented operation is: Waiting for recovery conflict resolution for dropping a tablespace. The RecoveryConflictTablespace path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/ipc/standby.c:564 —
WAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:151 —
RECOVERY_CONFLICT_TABLESPACE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.47 - IPC: RecoveryEndCommand
RecoveryEndCommand
VersionsPG 15-18
Evidence2 source location(s)
Official description
Waiting for recovery_end_command to complete
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RECOVERY_END_COMMAND at src/backend/access/transam/xlog.c:5337 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:152. The instrumented operation is: Waiting for recovery_end_command to complete. The RecoveryEndCommand path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlog.c:5337 —
WAIT_EVENT_RECOVERY_END_COMMAND - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:152 —
RECOVERY_END_COMMAND
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.48 - IPC: RecoveryPause
RecoveryPause
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for recovery to be resumed
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RECOVERY_PAUSE at src/backend/access/transam/xlogrecovery.c:2994 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:153. The instrumented operation is: Waiting for recovery to be resumed. The RecoveryPause path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlogrecovery.c:2994 —
WAIT_EVENT_RECOVERY_PAUSE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:153 —
RECOVERY_PAUSE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.49 - IPC: ReplicationOriginDrop
ReplicationOriginDrop
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a replication origin to become inactive so it can be dropped
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REPLICATION_ORIGIN_DROP at src/backend/replication/logical/origin.c:408 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:154. The instrumented operation is: Waiting for a replication origin to become inactive so it can be dropped. The ReplicationOriginDrop path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/origin.c:408 —
WAIT_EVENT_REPLICATION_ORIGIN_DROP - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:154 —
REPLICATION_ORIGIN_DROP
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.50 - IPC: ReplicationSlotDrop
ReplicationSlotDrop
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for a replication slot to become inactive so it can be dropped
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REPLICATION_SLOT_DROP at src/backend/replication/slot.c:657 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:155. The instrumented operation is: Waiting for a replication slot to become inactive so it can be dropped. The ReplicationSlotDrop path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/slot.c:657 —
WAIT_EVENT_REPLICATION_SLOT_DROP - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:155 —
REPLICATION_SLOT_DROP
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.51 - IPC: RestoreCommand
RestoreCommand
VersionsPG 15-18
Evidence2 source location(s)
Official description
Waiting for restore_command to complete
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RESTORE_COMMAND at src/backend/access/transam/xlogarchive.c:162 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:156. The instrumented operation is: Waiting for restore_command to complete. The RestoreCommand path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlogarchive.c:162 —
WAIT_EVENT_RESTORE_COMMAND - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:156 —
RESTORE_COMMAND
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.52 - IPC: SafeSnapshot
SafeSnapshot
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_SAFE_SNAPSHOT at src/backend/storage/lmgr/predicate.c:1589 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:157. The instrumented operation is: Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction. The SafeSnapshot path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/predicate.c:1589 —
WAIT_EVENT_SAFE_SNAPSHOT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:157 —
SAFE_SNAPSHOT
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
7.53 - IPC: SyncRep
SyncRep
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for confirmation from a remote server during synchronous replication
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_SYNC_REP at src/backend/replication/syncrep.c:332 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:158. The instrumented operation is: Waiting for confirmation from a remote server during synchronous replication. The SyncRep path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/syncrep.c:332 —
WAIT_EVENT_SYNC_REP - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:158 —
SYNC_REP
Related controls and signals
7.54 - IPC: WalReceiverExit
WalReceiverExit
VersionsPG 14-18
Evidence2 source location(s)
Official description
Waiting for the WAL receiver to exit
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_RECEIVER_EXIT at src/backend/replication/walreceiverfuncs.c:228 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:159. The instrumented operation is: Waiting for the WAL receiver to exit. The WalReceiverExit path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/walreceiverfuncs.c:228 —
WAIT_EVENT_WAL_RECEIVER_EXIT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:159 —
WAL_RECEIVER_EXIT
Related controls and signals
7.55 - IPC: WalReceiverUpstreamCatchup
WalReceiverUpstreamCatchup
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting for upstream server WAL flush position to catch up to requested start point
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Patch-level availability: Observed in 17.11+ and 18.6+; it is absent from 17.10 and 18.4, so the major-only range is insufficient.
Trigger mechanism
WAIT_EVENT_WAL_RECEIVER_UPSTREAM_CATCHUP at src/backend/replication/walreceiver.c:398 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:165. The instrumented operation is: Waiting for upstream server WAL flush position to catch up to requested start point. The WalReceiverUpstreamCatchup path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/walreceiver.c:398 —
WAIT_EVENT_WAL_RECEIVER_UPSTREAM_CATCHUP - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:165 —
WAL_RECEIVER_UPSTREAM_CATCHUP
Related controls and signals
7.56 - IPC: WalReceiverWaitStart
WalReceiverWaitStart
VersionsPG 14-18
Evidence4 source location(s)
Official description
Waiting for startup process to send initial data for streaming replication
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | ✓ | ✓ | ✓ | ✓ |
Earlier names: Client/WalReceiverWaitStart (PG 13)
Trigger mechanism
WAIT_EVENT_WAL_RECEIVER_WAIT_START at src/backend/postmaster/pgstat.c:3738 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/postmaster/pgstat.c:3739. The instrumented operation is: Waiting for startup process to send initial data for streaming replication. The WalReceiverWaitStart path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 13.23 · src/backend/postmaster/pgstat.c:3738 —
WAIT_EVENT_WAL_RECEIVER_WAIT_START - PostgreSQL 13.23 · src/backend/postmaster/pgstat.c:3739 —
WalReceiverWaitStart - PostgreSQL 18.6 · src/backend/replication/walreceiver.c:784 —
WAIT_EVENT_WAL_RECEIVER_WAIT_START - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:160 —
WAL_RECEIVER_WAIT_START
Related controls and signals
7.57 - IPC: WalSummaryReady
WalSummaryReady
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting for a new WAL summary to be generated
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_SUMMARY_READY at src/backend/postmaster/walsummarizer.c:821 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:161. The instrumented operation is: Waiting for a new WAL summary to be generated. The WalSummaryReady path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/walsummarizer.c:821 —
WAIT_EVENT_WAL_SUMMARY_READY - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:161 —
WAL_SUMMARY_READY
Related controls and signals
7.58 - IPC: XactGroupUpdate
XactGroupUpdate
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for the group leader to update transaction status at transaction end
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_XACT_GROUP_UPDATE at src/backend/access/transam/clog.c:535 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:162. The instrumented operation is: Waiting for the group leader to update transaction status at transaction end. The XactGroupUpdate path has reached a process-coordination point and sleeps until a peer, worker, barrier, queue, or replication phase signals progress.
Normal or trouble?
- Normal: Brief rendezvous is normal when every participant continues to advance.
- Investigate: Investigate when the same phase persists across three samples, the expected peer is absent or blocked, or a queue and its dependants stop moving.
Diagnostic SQL
Response
- Identify the peer or phase named by the event.
- Inspect that participant’s wait, error, and progress state.
- Repair the stalled participant or upstream dependency instead of treating the waiter as the root cause.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/clog.c:535 —
WAIT_EVENT_XACT_GROUP_UPDATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:162 —
XACT_GROUP_UPDATE
Related controls and signals
8 - Client waits
Client flips the usual suspicion: PostgreSQL is ready to read, write, or complete a protocol step, and the remote side or network has not progressed. A large client-wait population is often normal for pooled idle connections.
State and transaction age decide severity
ClientRead plus state = 'idle' is expected. The same event with idle in transaction and an old xact_start can retain locks, snapshots, and dead tuples. ClientWrite on active sessions suggests the server cannot hand results to the consumer fast enough.
- Normal: idle pooled sessions waiting for the next command.
- Watch: old
idle in transaction, activeClientWrite, handshake waits, or application latency at the same time. - Urgent: clients stop consuming results, connection slots are exhausted, open transactions block cleanup, or a replication client disconnects repeatedly.
Events to recognize
| Event | First owner to contact |
|---|---|
| ClientRead | Application/connection pool |
| ClientWrite | Application consumer or network |
| GssOpenServer | Authentication/network path |
| SslOpenServer | TLS handshake path |
| LibpqwalreceiverReceive | Upstream primary/network |
| WalSenderWriteData | Standby or replication client |
Common misreads
- “Most sessions are in ClientRead” is not a database bottleneck without state, transaction age, and pool sizing.
- Cancelling an idle client does not fix an oversized pool; it only makes the pool reconnect.
ClientWritecan be caused by a slow consumer even when the database host network looks idle.- Replication-flavoured Client waits belong to the same protocol boundary but have different operational owners.
8.1 - Client: ClientRead
ClientRead
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to read data from the client
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CLIENT_READ at src/backend/libpq/be-secure.c:219 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:85. The instrumented operation is: Waiting to read data from the client. The frontend protocol path reports ClientRead immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 18.6 · src/backend/libpq/be-secure.c:219 —
WAIT_EVENT_CLIENT_READ - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:85 —
CLIENT_READ
Related controls and signals
8.2 - Client: ClientWrite
ClientWrite
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to write data to the client
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CLIENT_WRITE at src/backend/libpq/be-secure.c:344 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:86. The instrumented operation is: Waiting to write data to the client. The frontend protocol path reports ClientWrite immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 18.6 · src/backend/libpq/be-secure.c:344 —
WAIT_EVENT_CLIENT_WRITE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:86 —
CLIENT_WRITE
Related controls and signals
8.3 - Client: GssOpenServer
GssOpenServer
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting to read data from the client while establishing a GSSAPI session
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Client/GSSOpenServer (PG 13-16)
Trigger mechanism
WAIT_EVENT_GSS_OPEN_SERVER at src/backend/libpq/be-secure-gssapi.c:461 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:277. The instrumented operation is: Waiting to read data from the client while establishing a GSSAPI session. The frontend protocol path reports GssOpenServer immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 16.15 · src/backend/libpq/be-secure-gssapi.c:461 —
WAIT_EVENT_GSS_OPEN_SERVER - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:277 —
GSSOpenServer - PostgreSQL 18.6 · src/backend/libpq/be-secure-gssapi.c:462 —
WAIT_EVENT_GSS_OPEN_SERVER - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:87 —
GSS_OPEN_SERVER
Related controls and signals
8.4 - Client: LibpqwalreceiverConnect
LibpqwalreceiverConnect
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting in WAL receiver to establish connection to remote server
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Client/LibPQWalReceiverConnect (PG 13-16)
Trigger mechanism
WAIT_EVENT_LIBPQWALRECEIVER_CONNECT at src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:231 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:280. The instrumented operation is: Waiting in WAL receiver to establish connection to remote server. The frontend protocol path reports LibpqwalreceiverConnect immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 16.15 · src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:231 —
WAIT_EVENT_LIBPQWALRECEIVER_CONNECT - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:280 —
LibPQWalReceiverConnect - PostgreSQL 18.6 · src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:228 —
WAIT_EVENT_LIBPQWALRECEIVER_CONNECT - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:88 —
LIBPQWALRECEIVER_CONNECT
Related controls and signals
8.5 - Client: LibpqwalreceiverReceive
LibpqwalreceiverReceive
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting in WAL receiver to receive data from remote server
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Client/LibPQWalReceiverReceive (PG 13-16)
Trigger mechanism
WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE at src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:876 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:283. The instrumented operation is: Waiting in WAL receiver to receive data from remote server. The frontend protocol path reports LibpqwalreceiverReceive immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 16.15 · src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:876 —
WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:283 —
LibPQWalReceiverReceive - PostgreSQL 18.6 · src/backend/replication/libpqwalreceiver/libpqwalreceiver.c:258 —
WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:89 —
LIBPQWALRECEIVER_RECEIVE
Related controls and signals
8.6 - Client: SslOpenServer
SslOpenServer
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for SSL while attempting connection
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Client/SSLOpenServer (PG 13-16)
Trigger mechanism
WAIT_EVENT_SSL_OPEN_SERVER at src/backend/libpq/be-secure-openssl.c:508 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:286. The instrumented operation is: Waiting for SSL while attempting connection. The frontend protocol path reports SslOpenServer immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 16.15 · src/backend/libpq/be-secure-openssl.c:508 —
WAIT_EVENT_SSL_OPEN_SERVER - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:286 —
SSLOpenServer - PostgreSQL 18.6 · src/backend/libpq/be-secure-openssl.c:526 —
WAIT_EVENT_SSL_OPEN_SERVER - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:90 —
SSL_OPEN_SERVER
Related controls and signals
8.7 - Client: WaitForStandbyConfirmation
WaitForStandbyConfirmation
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting for WAL to be received and flushed by the physical standby
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAIT_FOR_STANDBY_CONFIRMATION at src/backend/replication/slot.c:3083 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:91. The instrumented operation is: Waiting for WAL to be received and flushed by the physical standby. The frontend protocol path reports WaitForStandbyConfirmation immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/slot.c:3083 —
WAIT_EVENT_WAIT_FOR_STANDBY_CONFIRMATION - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:91 —
WAIT_FOR_STANDBY_CONFIRMATION
Related controls and signals
8.8 - Client: WalSenderWaitForWal
WalSenderWaitForWal
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting for WAL to be flushed in WAL sender process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Client/WalSenderWaitForWAL (PG 13-16)
Trigger mechanism
WAIT_EVENT_WAL_SENDER_WAIT_WAL at src/backend/replication/walsender.c:1714 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:289. The instrumented operation is: Waiting for WAL to be flushed in WAL sender process. The frontend protocol path reports WalSenderWaitForWal immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 16.15 · src/backend/replication/walsender.c:1714 —
WAIT_EVENT_WAL_SENDER_WAIT_WAL - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:289 —
WalSenderWaitForWAL - PostgreSQL 18.6 · src/backend/replication/walsender.c:1813 —
WAIT_EVENT_WAL_SENDER_WAIT_FOR_WAL - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:92 —
WAL_SENDER_WAIT_FOR_WAL
Related controls and signals
8.9 - Client: WalSenderWriteData
WalSenderWriteData
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting for any activity when processing replies from WAL receiver in WAL sender process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_SENDER_WRITE_DATA at src/backend/replication/walsender.c:1653 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:93. The instrumented operation is: Waiting for any activity when processing replies from WAL receiver in WAL sender process. The frontend protocol path reports WalSenderWriteData immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.
Normal or trouble?
- Normal: Idle ClientRead sessions are normal connection-pool inventory.
- Investigate: Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.
Diagnostic SQL
Response
- Check state and transaction age before counting the wait as load.
- Correlate with the owning application, pool, and network path.
- Fix consumer backpressure or pool policy rather than repeatedly terminating connections.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/walsender.c:1653 —
WAIT_EVENT_WAL_SENDER_WRITE_DATA - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:93 —
WAL_SENDER_WRITE_DATA
Related controls and signals
9 - Activity waits
Activity is mostly the sound of a healthy idle background process. Archiver, checkpointer, WAL writer, autovacuum launcher, replication workers, and related processes publish distinct names while waiting in their main loop.
Interpret by backend type
These events should not be counted in a foreground “waiting session percentage.” Instead, compare the event with backend_type and ask whether that process should currently have work.
- Normal: one matching background process waits in its documented main loop.
- Watch: the event appears on the wrong backend type, the process is absent, or work queues grow while it remains idle.
- Urgent: required background progress has stopped—archiving backlog, no checkpoints, replication not advancing, or shutdown unable to finish.
Events to recognize
| Event | Expected process |
|---|---|
| AutovacuumMain | Autovacuum launcher between scheduling cycles |
| CheckpointerMain | Checkpointer awaiting work |
| WalWriterMain | WAL writer main loop |
| ArchiverMain | Archiver waiting for a completed segment |
| WalReceiverMain | WAL receiver main loop |
| RecoveryWalStream | Startup process waiting for streamed WAL |
| IoWorkerMain | PG18 asynchronous I/O worker awaiting work |
Common misreads
- Activity waits dominating all backends can simply mean the cluster is idle.
- An idle checkpointer is not evidence that checkpoints are disabled.
- A normal wait name does not prove progress; check the queue/backlog and timestamps.
- Missing expected background processes is often more important than seeing their Activity wait.
9.1 - Activity: ArchiverMain
ArchiverMain
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in main loop of archiver process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_ARCHIVER_MAIN at src/backend/postmaster/pgarch.c:362 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:54. The instrumented operation is: Waiting in main loop of archiver process. The ArchiverMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/pgarch.c:362 —
WAIT_EVENT_ARCHIVER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:54 —
ARCHIVER_MAIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.2 - Activity: AutovacuumMain
AutovacuumMain
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting in main loop of autovacuum launcher process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Activity/AutoVacuumMain (PG 13-16)
Trigger mechanism
WAIT_EVENT_AUTOVACUUM_MAIN at src/backend/postmaster/autovacuum.c:667 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:216. The instrumented operation is: Waiting in main loop of autovacuum launcher process. The AutovacuumMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 16.15 · src/backend/postmaster/autovacuum.c:667 —
WAIT_EVENT_AUTOVACUUM_MAIN - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:216 —
AutoVacuumMain - PostgreSQL 18.6 · src/backend/postmaster/autovacuum.c:595 —
WAIT_EVENT_AUTOVACUUM_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:55 —
AUTOVACUUM_MAIN
Related controls and signals
9.3 - Activity: BgwriterHibernate
BgwriterHibernate
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting in background writer process, hibernating
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Activity/BgWriterHibernate (PG 13-16)
Trigger mechanism
WAIT_EVENT_BGWRITER_HIBERNATE at src/backend/postmaster/bgwriter.c:339 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:219. The instrumented operation is: Waiting in background writer process, hibernating. The BgwriterHibernate background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 16.15 · src/backend/postmaster/bgwriter.c:339 —
WAIT_EVENT_BGWRITER_HIBERNATE - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:219 —
BgWriterHibernate - PostgreSQL 18.6 · src/backend/postmaster/bgwriter.c:337 —
WAIT_EVENT_BGWRITER_HIBERNATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:56 —
BGWRITER_HIBERNATE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.4 - Activity: BgwriterMain
BgwriterMain
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting in main loop of background writer process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Activity/BgWriterMain (PG 13-16)
Trigger mechanism
WAIT_EVENT_BGWRITER_MAIN at src/backend/postmaster/bgwriter.c:311 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:222. The instrumented operation is: Waiting in main loop of background writer process. The BgwriterMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 16.15 · src/backend/postmaster/bgwriter.c:311 —
WAIT_EVENT_BGWRITER_MAIN - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:222 —
BgWriterMain - PostgreSQL 18.6 · src/backend/postmaster/bgwriter.c:309 —
WAIT_EVENT_BGWRITER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:57 —
BGWRITER_MAIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.5 - Activity: CheckpointerMain
CheckpointerMain
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in main loop of checkpointer process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CHECKPOINTER_MAIN at src/backend/postmaster/checkpointer.c:583 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:58. The instrumented operation is: Waiting in main loop of checkpointer process. The CheckpointerMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/checkpointer.c:583 —
WAIT_EVENT_CHECKPOINTER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:58 —
CHECKPOINTER_MAIN
Related controls and signals
9.6 - Activity: CheckpointerShutdown
CheckpointerShutdown
VersionsPG 18
Evidence2 source location(s)
Official description
Waiting for checkpointer process to be terminated
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
WAIT_EVENT_CHECKPOINTER_SHUTDOWN at src/backend/postmaster/checkpointer.c:631 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:59. The instrumented operation is: Waiting for checkpointer process to be terminated. The CheckpointerShutdown background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/checkpointer.c:631 —
WAIT_EVENT_CHECKPOINTER_SHUTDOWN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:59 —
CHECKPOINTER_SHUTDOWN
Related controls and signals
9.7 - Activity: IoWorkerMain
IoWorkerMain
VersionsPG 18
Evidence2 source location(s)
Official description
Waiting in main loop of IO Worker process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | — | ✓ |
Trigger mechanism
WAIT_EVENT_IO_WORKER_MAIN at src/backend/storage/aio/method_worker.c:573 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:60. The instrumented operation is: Waiting in main loop of IO Worker process. The IoWorkerMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/aio/method_worker.c:573 —
WAIT_EVENT_IO_WORKER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:60 —
IO_WORKER_MAIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.8 - Activity: LogicalApplyMain
LogicalApplyMain
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in main loop of logical replication apply process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_APPLY_MAIN at src/backend/replication/logical/worker.c:3766 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:61. The instrumented operation is: Waiting in main loop of logical replication apply process. The LogicalApplyMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/worker.c:3766 —
WAIT_EVENT_LOGICAL_APPLY_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:61 —
LOGICAL_APPLY_MAIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.9 - Activity: LogicalLauncherMain
LogicalLauncherMain
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in main loop of logical replication launcher process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_LAUNCHER_MAIN at src/backend/replication/logical/launcher.c:1242 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:62. The instrumented operation is: Waiting in main loop of logical replication launcher process. The LogicalLauncherMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/launcher.c:1242 —
WAIT_EVENT_LOGICAL_LAUNCHER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:62 —
LOGICAL_LAUNCHER_MAIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.10 - Activity: LogicalParallelApplyMain
LogicalParallelApplyMain
VersionsPG 16-18
Evidence2 source location(s)
Official description
Waiting in main loop of logical replication parallel apply process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_LOGICAL_PARALLEL_APPLY_MAIN at src/backend/replication/logical/applyparallelworker.c:810 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:63. The instrumented operation is: Waiting in main loop of logical replication parallel apply process. The LogicalParallelApplyMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/applyparallelworker.c:810 —
WAIT_EVENT_LOGICAL_PARALLEL_APPLY_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:63 —
LOGICAL_PARALLEL_APPLY_MAIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.11 - Activity: PgStatMain
PgStatMain
VersionsPG 13-14
Evidence2 source location(s)
Official description
Waiting in main loop of statistics collector process.
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | — | — | — | — |
Trigger mechanism
WAIT_EVENT_PGSTAT_MAIN at src/backend/postmaster/pgstat.c:3425 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:234. The instrumented operation is: Waiting in main loop of statistics collector process. The PgStatMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 14.24 · src/backend/postmaster/pgstat.c:3425 —
WAIT_EVENT_PGSTAT_MAIN - PostgreSQL 14.24 · src/backend/utils/activity/wait_event.c:234 —
PgStatMain
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.12 - Activity: RecoveryWalStream
RecoveryWalStream
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in main loop of startup process for WAL to arrive, during streaming recovery
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RECOVERY_WAL_STREAM at src/backend/access/transam/xlogrecovery.c:4038 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:64. The instrumented operation is: Waiting in main loop of startup process for WAL to arrive, during streaming recovery. The RecoveryWalStream background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlogrecovery.c:4038 —
WAIT_EVENT_RECOVERY_WAL_STREAM - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:64 —
RECOVERY_WAL_STREAM
Related controls and signals
9.13 - Activity: ReplicationSlotsyncMain
ReplicationSlotsyncMain
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting in main loop of slot sync worker
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REPLICATION_SLOTSYNC_MAIN at src/backend/replication/logical/slotsync.c:1369 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:65. The instrumented operation is: Waiting in main loop of slot sync worker. The ReplicationSlotsyncMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/slotsync.c:1369 —
WAIT_EVENT_REPLICATION_SLOTSYNC_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:65 —
REPLICATION_SLOTSYNC_MAIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.14 - Activity: ReplicationSlotsyncShutdown
ReplicationSlotsyncShutdown
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting for slot sync worker to shut down
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REPLICATION_SLOTSYNC_SHUTDOWN at src/backend/replication/logical/slotsync.c:1732 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:66. The instrumented operation is: Waiting for slot sync worker to shut down. The ReplicationSlotsyncShutdown background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/logical/slotsync.c:1732 —
WAIT_EVENT_REPLICATION_SLOTSYNC_SHUTDOWN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:66 —
REPLICATION_SLOTSYNC_SHUTDOWN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.15 - Activity: SysloggerMain
SysloggerMain
VersionsPG 17-18
Evidence4 source location(s)
Official description
Waiting in main loop of syslogger process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Earlier names: Activity/SysLoggerMain (PG 13-16)
Trigger mechanism
WAIT_EVENT_SYSLOGGER_MAIN at src/backend/postmaster/syslogger.c:487 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:240. The instrumented operation is: Waiting in main loop of syslogger process. The SysloggerMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 16.15 · src/backend/postmaster/syslogger.c:487 —
WAIT_EVENT_SYSLOGGER_MAIN - PostgreSQL 16.15 · src/backend/utils/activity/wait_event.c:240 —
SysLoggerMain - PostgreSQL 18.6 · src/backend/postmaster/syslogger.c:513 —
WAIT_EVENT_SYSLOGGER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:67 —
SYSLOGGER_MAIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
9.16 - Activity: WalReceiverMain
WalReceiverMain
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in main loop of WAL receiver process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_RECEIVER_MAIN at src/backend/replication/walreceiver.c:600 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:68. The instrumented operation is: Waiting in main loop of WAL receiver process. The WalReceiverMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/walreceiver.c:600 —
WAIT_EVENT_WAL_RECEIVER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:68 —
WAL_RECEIVER_MAIN
Related controls and signals
9.17 - Activity: WalSenderMain
WalSenderMain
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in main loop of WAL sender process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_SENDER_MAIN at src/backend/replication/walsender.c:2963 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:69. The instrumented operation is: Waiting in main loop of WAL sender process. The WalSenderMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/replication/walsender.c:2963 —
WAIT_EVENT_WAL_SENDER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:69 —
WAL_SENDER_MAIN
Related controls and signals
9.18 - Activity: WalSummarizerWal
WalSummarizerWal
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting in WAL summarizer for more WAL to be generated
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_SUMMARIZER_WAL at src/backend/postmaster/walsummarizer.c:1798 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:70. The instrumented operation is: Waiting in WAL summarizer for more WAL to be generated. The WalSummarizerWal background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/walsummarizer.c:1798 —
WAIT_EVENT_WAL_SUMMARIZER_WAL - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:70 —
WAL_SUMMARIZER_WAL
Related controls and signals
9.19 - Activity: WalWriterMain
WalWriterMain
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in main loop of WAL writer process
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_WRITER_MAIN at src/backend/postmaster/walwriter.c:271 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:71. The instrumented operation is: Waiting in main loop of WAL writer process. The WalWriterMain background path reports this event around its latch wait when its main loop has no immediate work. A signal, timeout, or new work clears the sleep and the process loops again.
Normal or trouble?
- Normal: This is normally expected idleness for the matching background process.
- Investigate: Investigate only when queued work or a shutdown/failover deadline is not advancing while the process remains here, or when the event appears on an unexpected backend type.
Diagnostic SQL
Response
- Match the row to backend_type.
- Inspect the process-specific backlog and last-progress timestamp.
- Fix the missing work signal or stalled upstream phase; do not kill a normally idle worker.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/walwriter.c:271 —
WAIT_EVENT_WAL_WRITER_MAIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:71 —
WAL_WRITER_MAIN
Related controls and signals
10 - Timeout waits
Timeout usually means PostgreSQL intentionally delayed work until a timer expires. The important question is not “why is the kernel slow?” but “which policy or safety mechanism inserted this delay?”
Identify the policy owner
Vacuum cost delay, recovery delay, backup throttling, checkpoint spreading, retry intervals, and pg_sleep() are designed waits. They become a problem when the policy no longer matches the service objective or when another bottleneck makes the delay recur excessively.
- Normal: the configured policy is active and useful work advances at the expected rate.
- Watch: foreground latency includes a deliberate sleep, or maintenance falls behind while spending much of its time throttled.
- Urgent: recovery/backup/checkpoint deadlines are missed, a spin delay persists, or an operator did not intend the policy.
Events to recognize
| Event | Policy |
|---|---|
| VacuumDelay | Cost-based vacuum throttling |
| CheckpointWriteDelay | Spreading checkpoint writes across the interval |
| RecoveryApplyDelay | Intentional delayed standby replay |
| RecoveryRetrieveRetryInterval | Retrying unavailable WAL sources |
| BaseBackupThrottle | Backup transfer-rate limit |
| PgSleep | SQL or internal sleep function |
| SpinDelay | Backoff while acquiring a contended spinlock |
Common misreads
Timeoutdoes not mean a statement or lock timeout fired; it means the process is currently sleeping on a timer.- Reducing vacuum delay can recover maintenance throughput but also increase I/O and CPU pressure.
RecoveryApplyDelaycan be intentional disaster-recovery policy.- Persistent
SpinDelaydeserves escalation: a spinlock should normally be held for an extremely short time.
10.1 - Timeout: BaseBackupThrottle
BaseBackupThrottle
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting during base backup when throttling activity
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_BASE_BACKUP_THROTTLE at src/backend/backup/basebackup_throttle.c:178 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:175. The instrumented operation is: Waiting during base backup when throttling activity. The BaseBackupThrottle path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/backup/basebackup_throttle.c:178 —
WAIT_EVENT_BASE_BACKUP_THROTTLE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:175 —
BASE_BACKUP_THROTTLE
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
10.2 - Timeout: CheckpointWriteDelay
CheckpointWriteDelay
VersionsPG 14-18
Evidence2 source location(s)
Official description
Waiting between writes while performing a checkpoint
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_CHECKPOINT_WRITE_DELAY at src/backend/postmaster/checkpointer.c:814 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:176. The instrumented operation is: Waiting between writes while performing a checkpoint. The CheckpointWriteDelay path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/checkpointer.c:814 —
WAIT_EVENT_CHECKPOINT_WRITE_DELAY - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:176 —
CHECKPOINT_WRITE_DELAY
Related controls and signals
10.3 - Timeout: PgSleep
PgSleep
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting due to a call to pg_sleep or a sibling function
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_PG_SLEEP at src/backend/utils/adt/misc.c:409 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:177. The instrumented operation is: Waiting due to a call to pg_sleep or a sibling function. The PgSleep path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:177 —
PG_SLEEP - PostgreSQL 18.6 · src/backend/utils/adt/misc.c:409 —
WAIT_EVENT_PG_SLEEP
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
10.4 - Timeout: RecoveryApplyDelay
RecoveryApplyDelay
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to apply WAL during recovery because of a delay setting
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RECOVERY_APPLY_DELAY at src/backend/access/transam/xlogrecovery.c:3092 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:178. The instrumented operation is: Waiting to apply WAL during recovery because of a delay setting. The RecoveryApplyDelay path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlogrecovery.c:3092 —
WAIT_EVENT_RECOVERY_APPLY_DELAY - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:178 —
RECOVERY_APPLY_DELAY
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
10.5 - Timeout: RecoveryRetrieveRetryInterval
RecoveryRetrieveRetryInterval
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting during recovery when WAL data is not available from any source (pg_wal, archive or stream)
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_RECOVERY_RETRIEVE_RETRY_INTERVAL at src/backend/access/transam/xlogrecovery.c:3764 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:179. The instrumented operation is: Waiting during recovery when WAL data is not available from any source (pg_wal, archive or stream). The RecoveryRetrieveRetryInterval path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/access/transam/xlogrecovery.c:3764 —
WAIT_EVENT_RECOVERY_RETRIEVE_RETRY_INTERVAL - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:179 —
RECOVERY_RETRIEVE_RETRY_INTERVAL
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
10.6 - Timeout: RegisterSyncRequest
RegisterSyncRequest
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting while sending synchronization requests to the checkpointer, because the request queue is full
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_REGISTER_SYNC_REQUEST at src/backend/storage/sync/sync.c:615 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:180. The instrumented operation is: Waiting while sending synchronization requests to the checkpointer, because the request queue is full. The RegisterSyncRequest path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/sync/sync.c:615 —
WAIT_EVENT_REGISTER_SYNC_REQUEST - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:180 —
REGISTER_SYNC_REQUEST
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
10.7 - Timeout: SpinDelay
SpinDelay
VersionsPG 16-18
Evidence2 source location(s)
Official description
Waiting while acquiring a contended spinlock
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_SPIN_DELAY at src/backend/storage/lmgr/s_lock.c:148 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:181. The instrumented operation is: Waiting while acquiring a contended spinlock. The SpinDelay path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/s_lock.c:148 —
WAIT_EVENT_SPIN_DELAY - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:181 —
SPIN_DELAY
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
10.8 - Timeout: VacuumDelay
VacuumDelay
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting in a cost-based vacuum delay point
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_VACUUM_DELAY at src/backend/commands/vacuum.c:2495 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:182. The instrumented operation is: Waiting in a cost-based vacuum delay point. The VacuumDelay path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/commands/vacuum.c:2495 —
WAIT_EVENT_VACUUM_DELAY - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:182 —
VACUUM_DELAY
Related controls and signals
10.9 - Timeout: VacuumTruncate
VacuumTruncate
VersionsPG 15-18
Evidence2 source location(s)
Official description
Waiting to acquire an exclusive lock to truncate off any empty pages at the end of a table vacuumed
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_VACUUM_TRUNCATE at src/backend/access/heap/vacuumlazy.c:3280 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:183. The instrumented operation is: Waiting to acquire an exclusive lock to truncate off any empty pages at the end of a table vacuumed. The VacuumTruncate path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/access/heap/vacuumlazy.c:3280 —
WAIT_EVENT_VACUUM_TRUNCATE - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:183 —
VACUUM_TRUNCATE
Related controls and signals
10.10 - Timeout: WalSummarizerError
WalSummarizerError
VersionsPG 17-18
Evidence2 source location(s)
Official description
Waiting after a WAL summarizer error
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| — | — | — | — | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_WAL_SUMMARIZER_ERROR at src/backend/postmaster/walsummarizer.c:337 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:184. The instrumented operation is: Waiting after a WAL summarizer error. The WalSummarizerError path deliberately waits on a timer, retry interval, throttle, or safety backoff. The latch timeout expires before work is reconsidered.
Normal or trouble?
- Normal: The wait is normal when the configured policy is intentional and useful work advances at the expected rate.
- Investigate: Investigate when the policy causes missed maintenance, recovery, backup, or latency objectives, or when a spin delay persists.
Diagnostic SQL
Response
- Identify the GUC or function that owns the timer.
- Compare productive work with time spent delayed.
- Adjust the policy only after checking the CPU, I/O, and durability pressure it was designed to control.
Source evidence
- PostgreSQL 18.6 · src/backend/postmaster/walsummarizer.c:337 —
WAIT_EVENT_WAL_SUMMARIZER_ERROR - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:184 —
WAL_SUMMARIZER_ERROR
Related controls and signals
11 - BufferPin waits
BufferPin has one core event, also named BufferPin. It means PostgreSQL needs exclusive access to a shared buffer but another backend still pins that page so it cannot be removed or structurally changed.
Treat persistence as suspicious
Pins are normal and short-lived while executors inspect pages. A sustained exclusive-pin wait is unusual and can come from another session holding a cursor open, an executor paused on a page, or concurrent index work that needs to delete/recycle the page.
- Normal: isolated, sub-second samples during scans or index maintenance.
- Watch: the same foreground session remains on BufferPin for more than one second.
- Urgent: many sessions queue, index cleanup/DDL cannot advance, or a cursor-owning session is idle while holding the pin.
What to inspect
- Identify the waiting query and its relation locks.
- Look for long-running cursors,
idle in transaction, and executor sessions touching the same relation. - Correlate the onset with
VACUUM, index deletion/recycling, DDL, or long scans. - Preserve the holder’s query and transaction context before cancelling anything.
Common misreads
- A buffer pin is not a heavyweight lock and has no direct owner row in
pg_locks. shared_bufferssize does not make a held pin disappear.- The waiter may be vacuum/index maintenance while the application session holding the pin looks harmless.
11.1 - BufferPin: BufferPin
BufferPin
VersionsPG 13-18
Evidence2 source location(s)
Official description
Waiting to acquire an exclusive pin on a buffer
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
WAIT_EVENT_BUFFER_PIN at src/backend/storage/buffer/bufmgr.c:5819 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event_names.txt:286. The instrumented operation is: Waiting to acquire an exclusive pin on a buffer. The buffer manager needs an exclusive pin, but another backend still holds a pin on the same shared buffer. It sleeps until the last conflicting pin is released.
Normal or trouble?
- Normal: An isolated sub-second sample can occur during scans or index maintenance.
- Investigate: Treat a wait beyond one second as suspicious, especially when a cursor or idle transaction may keep the page pinned.
Diagnostic SQL
Response
- Preserve the waiting query and relation context.
- Find long cursors and idle-in-transaction sessions touching the same relation.
- Cancel only after identifying the safest holder or maintenance victim.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/buffer/bufmgr.c:5819 —
WAIT_EVENT_BUFFER_PIN - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:286 —
BUFFER_PIN
Related controls and signals
- GUCs: None directly.
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share]
12 - Extension wait events
PostgreSQL reserves the Extension wait-event type for waits reported by extension code. The built-in inventory contains the generic Extension identity, while newer releases also expose APIs that let extensions register human-readable custom names.
Boundary of this atlas
This site inventories the core names shipped by PostgreSQL 13–18. It does not attempt to enumerate names created at runtime by third-party extensions because that set depends on the loaded binaries and can differ between clusters.
When you see an extension-defined wait:
- Record
extversionand the exact extension package build. - Query the local
pg_wait_eventsview on PG17+; it is the authority for names registered in that instance. - Search the extension source for its registration call and matching
pgstat_report_wait_start()/pgstat_report_wait_end()pair. - Use the extension’s runbook for normal/trouble boundaries; the PostgreSQL core description cannot supply them.
pg_wait_events exists in PostgreSQL 17 and later. On PG13–16, identify the wait name from pg_stat_activity and inspect the extension version/source directly.
Safety contract for extension authors
Report the wait immediately before the blocking operation and clear it on every exit path, including errors. Keep the name stable enough for dashboards and runbooks, and document which resource or peer can make progress. A custom name without that ownership contract is observability debt.
13 - Related GUCs
Configuration controls referenced by wait-event response guidance. This index contains 21 entries.
13.1 - [[guc:autovacuum_freeze_max_age]]
Transaction age that forces anti-wraparound vacuum.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.2 - [[guc:autovacuum_multixact_freeze_max_age]]
Multixact age that forces anti-wraparound vacuum.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.3 - [[guc:autovacuum_naptime]]
Minimum delay between autovacuum launcher rounds per database.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.4 - [[guc:checkpoint_timeout]]
Maximum time between automatic WAL checkpoints.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.5 - [[guc:deadlock_timeout]]
Delay before PostgreSQL checks a lock wait for deadlock.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.6 - [[guc:full_page_writes]]
Controls full-page images after checkpoints for crash safety.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.7 - [[guc:idle_in_transaction_session_timeout]]
Terminates sessions left idle inside an open transaction.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.8 - [[guc:lock_timeout]]
Aborts statements that wait too long to acquire a lock.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.9 - [[guc:max_connections]]
Maximum concurrent database connections.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.10 - [[guc:max_locks_per_transaction]]
Shared lock-table capacity budget per transaction.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.11 - [[guc:max_parallel_workers_per_gather]]
Maximum parallel workers per Gather/Gather Merge node.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.12 - [[guc:max_wal_size]]
Soft WAL-volume limit that can trigger checkpoints.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.13 - [[guc:shared_buffers]]
Size of PostgreSQL’s shared buffer cache.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.14 - [[guc:synchronous_commit]]
Controls when commits wait for local or remote WAL durability.
Official PostgreSQL 18 parameter reference
Referenced by wait events
- Activity/RecoveryWalStream
- Activity/WalReceiverMain
- Activity/WalSenderMain
- Activity/WalSummarizerWal
- Activity/WalWriterMain
- Client/LibpqwalreceiverConnect
- Client/LibpqwalreceiverReceive
- Client/WalSenderWaitForWal
- Client/WalSenderWriteData
- IO/WalBootstrapSync
- IO/WalBootstrapWrite
- IO/WalCopyRead
- IO/WalCopySync
- IO/WalCopyWrite
- IO/WalInitSync
- IO/WalInitWrite
- IO/WalRead
- IO/WalSummaryRead
- IO/WalSummaryWrite
- IO/WalSync
- IO/WalSyncMethodAssign
- IO/WalWrite
- IO/WalsenderTimelineHistoryRead
- IPC/BackupWaitWalArchive
- IPC/WalReceiverExit
- IPC/WalReceiverUpstreamCatchup
- IPC/WalReceiverWaitStart
- IPC/WalSummaryReady
- LWLock/SyncRep
- LWLock/WALSummarizer
- LWLock/WALWrite
- Timeout/WalSummarizerError
13.15 - [[guc:synchronous_standby_names]]
Selects standbys that can satisfy synchronous commit.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.16 - [[guc:vacuum_freeze_table_age]]
Table age at which VACUUM scans for freezing.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.17 - [[guc:vacuum_multixact_freeze_table_age]]
Table multixact age at which VACUUM scans for freezing.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.18 - [[guc:wal_buffers]]
Shared-memory buffers used for WAL not yet written to disk.
Official PostgreSQL 18 parameter reference
Referenced by wait events
- Activity/RecoveryWalStream
- Activity/WalReceiverMain
- Activity/WalSenderMain
- Activity/WalSummarizerWal
- Activity/WalWriterMain
- Client/LibpqwalreceiverConnect
- Client/LibpqwalreceiverReceive
- Client/WalSenderWaitForWal
- Client/WalSenderWriteData
- IO/WalBootstrapSync
- IO/WalBootstrapWrite
- IO/WalCopyRead
- IO/WalCopySync
- IO/WalCopyWrite
- IO/WalInitSync
- IO/WalInitWrite
- IO/WalRead
- IO/WalSummaryRead
- IO/WalSummaryWrite
- IO/WalSync
- IO/WalSyncMethodAssign
- IO/WalWrite
- IO/WalsenderTimelineHistoryRead
- IPC/BackupWaitWalArchive
- IPC/WalReceiverExit
- IPC/WalReceiverUpstreamCatchup
- IPC/WalReceiverWaitStart
- IPC/WalSummaryReady
- LWLock/WALBufMapping
- LWLock/WALInsert
- LWLock/WALSummarizer
- Timeout/WalSummarizerError
13.19 - [[guc:wal_sender_timeout]]
Disconnects inactive replication connections after a timeout.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.20 - [[guc:wal_writer_delay]]
Delay between WAL writer activity rounds.
Official PostgreSQL 18 parameter reference
Referenced by wait events
13.21 - [[guc:wal_writer_flush_after]]
Amount of WAL written before the WAL writer requests a flush.
Official PostgreSQL 18 parameter reference
Referenced by wait events
14 - Related metrics
Signals used to decide whether a wait is expected or harmful. This index contains 22 entries.
14.1 - [[metric:active_backends]]
Backends currently executing a query.
Referenced by wait events
14.2 - [[metric:blocked_sessions]]
Sessions with one or more blocking PIDs.
Referenced by wait events
14.3 - [[metric:blocks_read]]
Relation blocks read by database or statement.
Referenced by wait events
14.4 - [[metric:buffer_hit_ratio]]
Blocks served from shared buffers versus blocks read.
Referenced by wait events
14.5 - [[metric:checkpoint_time]]
Checkpoint write and synchronization duration.
Referenced by wait events
14.6 - [[metric:commit_latency]]
End-to-end transaction commit latency.
Referenced by wait events
14.7 - [[metric:io_read_time]]
Timed read latency from pg_stat_io or operating-system telemetry.
Referenced by wait events
- IO/AioIoCompletion
- IO/AioIoUringExecution
- IO/AioIoUringSubmit
- IO/BasebackupRead
- IO/BasebackupSync
- IO/BasebackupWrite
- IO/BuffileRead
- IO/BuffileTruncate
- IO/BuffileWrite
- IO/ControlFileRead
- IO/ControlFileSync
- IO/ControlFileSyncUpdate
- IO/ControlFileWrite
- IO/ControlFileWriteUpdate
- IO/CopyFileCopy
- IO/CopyFileRead
- IO/CopyFileWrite
- IO/DataFileExtend
- IO/DataFileFlush
- IO/DataFileImmediateSync
- IO/DataFilePrefetch
- IO/DataFileRead
- IO/DataFileSync
- IO/DataFileTruncate
- IO/DataFileWrite
- IO/DsmAllocate
- IO/DsmFillZeroWrite
- IO/LockFileAddtodatadirRead
- IO/LockFileAddtodatadirSync
- IO/LockFileAddtodatadirWrite
- IO/LockFileCreateRead
- IO/LockFileCreateSync
- IO/LockFileCreateWrite
- IO/LockFileRecheckdatadirRead
- IO/LogicalChangesRead
- IO/LogicalChangesWrite
- IO/LogicalRewriteCheckpointSync
- IO/LogicalRewriteMappingSync
- IO/LogicalRewriteMappingWrite
- IO/LogicalRewriteSync
- IO/LogicalRewriteTruncate
- IO/LogicalRewriteWrite
- IO/LogicalSubxactRead
- IO/LogicalSubxactWrite
- IO/RelationMapRead
- IO/RelationMapReplace
- IO/RelationMapSync
- IO/RelationMapWrite
- IO/ReorderBufferRead
- IO/ReorderBufferWrite
- IO/ReorderLogicalMappingRead
- IO/ReplicationSlotRead
- IO/ReplicationSlotRestoreSync
- IO/ReplicationSlotSync
- IO/ReplicationSlotWrite
- IO/SlruFlushSync
- IO/SlruRead
- IO/SlruSync
- IO/SlruWrite
- IO/SnapbuildRead
- IO/SnapbuildSync
- IO/SnapbuildWrite
- IO/TimelineHistoryFileSync
- IO/TimelineHistoryFileWrite
- IO/TimelineHistoryRead
- IO/TimelineHistorySync
- IO/TimelineHistoryWrite
- IO/TwophaseFileRead
- IO/TwophaseFileSync
- IO/TwophaseFileWrite
- IO/VersionFileSync
- IO/VersionFileWrite
- IO/WalBootstrapSync
- IO/WalBootstrapWrite
- IO/WalCopyRead
- IO/WalCopySync
- IO/WalCopyWrite
- IO/WalInitSync
- IO/WalInitWrite
- IO/WalRead
- IO/WalSummaryRead
- IO/WalSummaryWrite
- IO/WalSync
- IO/WalSyncMethodAssign
- IO/WalWrite
- IO/WalsenderTimelineHistoryRead
14.8 - [[metric:io_write_time]]
Timed write latency from pg_stat_io or operating-system telemetry.
Referenced by wait events
- IO/AioIoCompletion
- IO/AioIoUringExecution
- IO/AioIoUringSubmit
- IO/BasebackupRead
- IO/BasebackupSync
- IO/BasebackupWrite
- IO/BuffileRead
- IO/BuffileTruncate
- IO/BuffileWrite
- IO/ControlFileRead
- IO/ControlFileSync
- IO/ControlFileSyncUpdate
- IO/ControlFileWrite
- IO/ControlFileWriteUpdate
- IO/CopyFileCopy
- IO/CopyFileRead
- IO/CopyFileWrite
- IO/DataFileExtend
- IO/DataFileFlush
- IO/DataFileImmediateSync
- IO/DataFilePrefetch
- IO/DataFileRead
- IO/DataFileSync
- IO/DataFileTruncate
- IO/DataFileWrite
- IO/DsmAllocate
- IO/DsmFillZeroWrite
- IO/LockFileAddtodatadirRead
- IO/LockFileAddtodatadirSync
- IO/LockFileAddtodatadirWrite
- IO/LockFileCreateRead
- IO/LockFileCreateSync
- IO/LockFileCreateWrite
- IO/LockFileRecheckdatadirRead
- IO/LogicalChangesRead
- IO/LogicalChangesWrite
- IO/LogicalRewriteCheckpointSync
- IO/LogicalRewriteMappingSync
- IO/LogicalRewriteMappingWrite
- IO/LogicalRewriteSync
- IO/LogicalRewriteTruncate
- IO/LogicalRewriteWrite
- IO/LogicalSubxactRead
- IO/LogicalSubxactWrite
- IO/RelationMapRead
- IO/RelationMapReplace
- IO/RelationMapSync
- IO/RelationMapWrite
- IO/ReorderBufferRead
- IO/ReorderBufferWrite
- IO/ReorderLogicalMappingRead
- IO/ReplicationSlotRead
- IO/ReplicationSlotRestoreSync
- IO/ReplicationSlotSync
- IO/ReplicationSlotWrite
- IO/SlruFlushSync
- IO/SlruRead
- IO/SlruSync
- IO/SlruWrite
- IO/SnapbuildRead
- IO/SnapbuildSync
- IO/SnapbuildWrite
- IO/TimelineHistoryFileSync
- IO/TimelineHistoryFileWrite
- IO/TimelineHistoryRead
- IO/TimelineHistorySync
- IO/TimelineHistoryWrite
- IO/TwophaseFileRead
- IO/TwophaseFileSync
- IO/TwophaseFileWrite
- IO/VersionFileSync
- IO/VersionFileWrite
- IO/WalBootstrapSync
- IO/WalBootstrapWrite
- IO/WalCopyRead
- IO/WalCopySync
- IO/WalCopyWrite
- IO/WalInitSync
- IO/WalInitWrite
- IO/WalRead
- IO/WalSummaryRead
- IO/WalSummaryWrite
- IO/WalSync
- IO/WalSyncMethodAssign
- IO/WalWrite
- IO/WalsenderTimelineHistoryRead
14.9 - [[metric:locks_per_backend]]
Rows in pg_locks grouped by backend.
Referenced by wait events
14.10 - [[metric:multixact_member_io]]
Reads and writes for multixact member storage.
Referenced by wait events
14.11 - [[metric:oldest_multixact_age]]
Oldest multixact age that still requires preservation.
Referenced by wait events
14.12 - [[metric:oldest_transaction_age]]
Age of the oldest open transaction or visibility horizon.
Referenced by wait events
- Activity/AutovacuumMain
- IO/LogicalSubxactRead
- IO/LogicalSubxactWrite
- IPC/XactGroupUpdate
- LWLock/Autovacuum
- LWLock/AutovacuumSchedule
- LWLock/BtreeVacuum
- LWLock/ParallelVacuumDSA
- LWLock/PerXactPredicateList
- LWLock/ProcArray
- LWLock/SerializableXactHash
- LWLock/WrapLimitsVacuum
- LWLock/XactBuffer
- LWLock/XactSLRU
- LWLock/XactTruncation
- Timeout/VacuumDelay
- Timeout/VacuumTruncate
14.13 - [[metric:replication_flush_lag]]
Distance or time between primary WAL and standby flush position.
Referenced by wait events
14.14 - [[metric:statement_latency]]
Latency distribution for statements associated with the wait.
Referenced by wait events
14.15 - [[metric:statement_wal_bytes]]
WAL bytes attributed to statements when pg_stat_statements tracks WAL.
Referenced by wait events
14.16 - [[metric:wait_event_share]]
Share of repeated active-session samples attributed to one event.
Referenced by wait events
- Activity/ArchiverMain
- Activity/AutovacuumMain
- Activity/BgwriterHibernate
- Activity/BgwriterMain
- Activity/CheckpointerMain
- Activity/CheckpointerShutdown
- Activity/IoWorkerMain
- Activity/LogicalApplyMain
- Activity/LogicalLauncherMain
- Activity/LogicalParallelApplyMain
- Activity/PgStatMain
- Activity/RecoveryWalStream
- Activity/ReplicationSlotsyncMain
- Activity/ReplicationSlotsyncShutdown
- Activity/SysloggerMain
- Activity/WalReceiverMain
- Activity/WalSenderMain
- Activity/WalSummarizerWal
- Activity/WalWriterMain
- BufferPin/BufferPin
- Client/ClientRead
- Client/ClientWrite
- Client/GssOpenServer
- Client/LibpqwalreceiverConnect
- Client/LibpqwalreceiverReceive
- Client/SslOpenServer
- Client/WaitForStandbyConfirmation
- Client/WalSenderWaitForWal
- Client/WalSenderWriteData
- Extension/Extension
- IO/AioIoCompletion
- IO/AioIoUringExecution
- IO/AioIoUringSubmit
- IO/BasebackupRead
- IO/BasebackupSync
- IO/BasebackupWrite
- IO/BuffileRead
- IO/BuffileTruncate
- IO/BuffileWrite
- IO/ControlFileRead
- IO/ControlFileSync
- IO/ControlFileSyncUpdate
- IO/ControlFileWrite
- IO/ControlFileWriteUpdate
- IO/CopyFileCopy
- IO/CopyFileRead
- IO/CopyFileWrite
- IO/DataFileExtend
- IO/DataFileFlush
- IO/DataFileImmediateSync
- IO/DataFilePrefetch
- IO/DataFileRead
- IO/DataFileSync
- IO/DataFileTruncate
- IO/DataFileWrite
- IO/DsmAllocate
- IO/DsmFillZeroWrite
- IO/LockFileAddtodatadirRead
- IO/LockFileAddtodatadirSync
- IO/LockFileAddtodatadirWrite
- IO/LockFileCreateRead
- IO/LockFileCreateSync
- IO/LockFileCreateWrite
- IO/LockFileRecheckdatadirRead
- IO/LogicalChangesRead
- IO/LogicalChangesWrite
- IO/LogicalRewriteCheckpointSync
- IO/LogicalRewriteMappingSync
- IO/LogicalRewriteMappingWrite
- IO/LogicalRewriteSync
- IO/LogicalRewriteTruncate
- IO/LogicalRewriteWrite
- IO/LogicalSubxactRead
- IO/LogicalSubxactWrite
- IO/RelationMapRead
- IO/RelationMapReplace
- IO/RelationMapSync
- IO/RelationMapWrite
- IO/ReorderBufferRead
- IO/ReorderBufferWrite
- IO/ReorderLogicalMappingRead
- IO/ReplicationSlotRead
- IO/ReplicationSlotRestoreSync
- IO/ReplicationSlotSync
- IO/ReplicationSlotWrite
- IO/SlruFlushSync
- IO/SlruRead
- IO/SlruSync
- IO/SlruWrite
- IO/SnapbuildRead
- IO/SnapbuildSync
- IO/SnapbuildWrite
- IO/TimelineHistoryFileSync
- IO/TimelineHistoryFileWrite
- IO/TimelineHistoryRead
- IO/TimelineHistorySync
- IO/TimelineHistoryWrite
- IO/TwophaseFileRead
- IO/TwophaseFileSync
- IO/TwophaseFileWrite
- IO/VersionFileSync
- IO/VersionFileWrite
- IO/WalBootstrapSync
- IO/WalBootstrapWrite
- IO/WalCopyRead
- IO/WalCopySync
- IO/WalCopyWrite
- IO/WalInitSync
- IO/WalInitWrite
- IO/WalRead
- IO/WalSummaryRead
- IO/WalSummaryWrite
- IO/WalSync
- IO/WalSyncMethodAssign
- IO/WalWrite
- IO/WalsenderTimelineHistoryRead
- IPC/AppendReady
- IPC/ArchiveCleanupCommand
- IPC/ArchiveCommand
- IPC/BackendTermination
- IPC/BackupWaitWalArchive
- IPC/BgworkerShutdown
- IPC/BgworkerStartup
- IPC/BtreePage
- IPC/BufferIo
- IPC/CheckpointDelayComplete
- IPC/CheckpointDelayStart
- IPC/CheckpointDone
- IPC/CheckpointStart
- IPC/ExecuteGather
- IPC/HashBatchAllocate
- IPC/HashBatchElect
- IPC/HashBatchLoad
- IPC/HashBuildAllocate
- IPC/HashBuildElect
- IPC/HashBuildHashInner
- IPC/HashBuildHashOuter
- IPC/HashGrowBatchesDecide
- IPC/HashGrowBatchesElect
- IPC/HashGrowBatchesFinish
- IPC/HashGrowBatchesReallocate
- IPC/HashGrowBatchesRepartition
- IPC/HashGrowBucketsElect
- IPC/HashGrowBucketsReallocate
- IPC/HashGrowBucketsReinsert
- IPC/LogicalApplySendData
- IPC/LogicalParallelApplyStateChange
- IPC/LogicalSyncData
- IPC/LogicalSyncStateChange
- IPC/MessageQueueInternal
- IPC/MessageQueuePutMessage
- IPC/MessageQueueReceive
- IPC/MessageQueueSend
- IPC/MultixactCreation
- IPC/ParallelBitmapScan
- IPC/ParallelCreateIndexScan
- IPC/ParallelFinish
- IPC/ProcSignalBarrier
- IPC/ProcarrayGroupUpdate
- IPC/Promote
- IPC/RecoveryConflictSnapshot
- IPC/RecoveryConflictTablespace
- IPC/RecoveryEndCommand
- IPC/RecoveryPause
- IPC/ReplicationOriginDrop
- IPC/ReplicationSlotDrop
- IPC/RestoreCommand
- IPC/SafeSnapshot
- IPC/SyncRep
- IPC/WalReceiverExit
- IPC/WalReceiverUpstreamCatchup
- IPC/WalReceiverWaitStart
- IPC/WalSummaryReady
- IPC/XactGroupUpdate
- Lock/advisory
- Lock/applytransaction
- Lock/extend
- Lock/frozenid
- Lock/object
- Lock/page
- Lock/relation
- Lock/spectoken
- Lock/transactionid
- Lock/tuple
- Lock/userlock
- Lock/virtualxid
- LWLock/AddinShmemInit
- LWLock/AioUringCompletion
- LWLock/AioWorkerSubmissionQueue
- LWLock/AutoFile
- LWLock/Autovacuum
- LWLock/AutovacuumSchedule
- LWLock/BackgroundWorker
- LWLock/BtreeVacuum
- LWLock/BufferContent
- LWLock/BufferMapping
- LWLock/Checkpoint
- LWLock/CheckpointerComm
- LWLock/CommitTs
- LWLock/CommitTsBuffer
- LWLock/CommitTsSLRU
- LWLock/ControlFile
- LWLock/DSMRegistry
- LWLock/DSMRegistryDSA
- LWLock/DSMRegistryHash
- LWLock/DynamicSharedMemoryControl
- LWLock/InjectionPoint
- LWLock/LockFastPath
- LWLock/LockManager
- LWLock/LogicalRepLauncherDSA
- LWLock/LogicalRepLauncherHash
- LWLock/LogicalRepWorker
- LWLock/MultiXactGen
- LWLock/MultiXactMemberBuffer
- LWLock/MultiXactMemberSLRU
- LWLock/MultiXactOffsetBuffer
- LWLock/MultiXactOffsetSLRU
- LWLock/MultiXactTruncation
- LWLock/NotifyBuffer
- LWLock/NotifyQueue
- LWLock/NotifyQueueTail
- LWLock/NotifySLRU
- LWLock/OidGen
- LWLock/OldSnapshotTimeMap
- LWLock/ParallelAppend
- LWLock/ParallelBtreeScan
- LWLock/ParallelHashJoin
- LWLock/ParallelQueryDSA
- LWLock/ParallelVacuumDSA
- LWLock/PerSessionDSA
- LWLock/PerSessionRecordType
- LWLock/PerSessionRecordTypmod
- LWLock/PerXactPredicateList
- LWLock/PgStatsDSA
- LWLock/PgStatsData
- LWLock/PgStatsHash
- LWLock/PredicateLockManager
- LWLock/ProcArray
- LWLock/RelCacheInit
- LWLock/RelationMapping
- LWLock/ReplicationOrigin
- LWLock/ReplicationOriginState
- LWLock/ReplicationSlotAllocation
- LWLock/ReplicationSlotControl
- LWLock/ReplicationSlotIO
- LWLock/SInvalRead
- LWLock/SInvalWrite
- LWLock/SerialBuffer
- LWLock/SerialControl
- LWLock/SerialSLRU
- LWLock/SerializableFinishedList
- LWLock/SerializablePredicateList
- LWLock/SerializableXactHash
- LWLock/SharedTidBitmap
- LWLock/SharedTupleStore
- LWLock/ShmemIndex
- LWLock/SubtransBuffer
- LWLock/SubtransSLRU
- LWLock/SyncRep
- LWLock/SyncScan
- LWLock/TablespaceCreate
- LWLock/TwoPhaseState
- LWLock/WALBufMapping
- LWLock/WALInsert
- LWLock/WALSummarizer
- LWLock/WALWrite
- LWLock/WaitEventCustom
- LWLock/WrapLimitsVacuum
- LWLock/XactBuffer
- LWLock/XactSLRU
- LWLock/XactTruncation
- LWLock/XidGen
- Timeout/BaseBackupThrottle
- Timeout/CheckpointWriteDelay
- Timeout/PgSleep
- Timeout/RecoveryApplyDelay
- Timeout/RecoveryRetrieveRetryInterval
- Timeout/RegisterSyncRequest
- Timeout/SpinDelay
- Timeout/VacuumDelay
- Timeout/VacuumTruncate
- Timeout/WalSummarizerError
14.17 - [[metric:waiting_sessions]]
Current sessions grouped by wait type and event.
Referenced by wait events
- Activity/ArchiverMain
- Activity/AutovacuumMain
- Activity/BgwriterHibernate
- Activity/BgwriterMain
- Activity/CheckpointerMain
- Activity/CheckpointerShutdown
- Activity/IoWorkerMain
- Activity/LogicalApplyMain
- Activity/LogicalLauncherMain
- Activity/LogicalParallelApplyMain
- Activity/PgStatMain
- Activity/RecoveryWalStream
- Activity/ReplicationSlotsyncMain
- Activity/ReplicationSlotsyncShutdown
- Activity/SysloggerMain
- Activity/WalReceiverMain
- Activity/WalSenderMain
- Activity/WalSummarizerWal
- Activity/WalWriterMain
- BufferPin/BufferPin
- Client/ClientRead
- Client/ClientWrite
- Client/GssOpenServer
- Client/LibpqwalreceiverConnect
- Client/LibpqwalreceiverReceive
- Client/SslOpenServer
- Client/WaitForStandbyConfirmation
- Client/WalSenderWaitForWal
- Client/WalSenderWriteData
- Extension/Extension
- IO/AioIoCompletion
- IO/AioIoUringExecution
- IO/AioIoUringSubmit
- IO/BasebackupRead
- IO/BasebackupSync
- IO/BasebackupWrite
- IO/BuffileRead
- IO/BuffileTruncate
- IO/BuffileWrite
- IO/ControlFileRead
- IO/ControlFileSync
- IO/ControlFileSyncUpdate
- IO/ControlFileWrite
- IO/ControlFileWriteUpdate
- IO/CopyFileCopy
- IO/CopyFileRead
- IO/CopyFileWrite
- IO/DataFileExtend
- IO/DataFileFlush
- IO/DataFileImmediateSync
- IO/DataFilePrefetch
- IO/DataFileRead
- IO/DataFileSync
- IO/DataFileTruncate
- IO/DataFileWrite
- IO/DsmAllocate
- IO/DsmFillZeroWrite
- IO/LockFileAddtodatadirRead
- IO/LockFileAddtodatadirSync
- IO/LockFileAddtodatadirWrite
- IO/LockFileCreateRead
- IO/LockFileCreateSync
- IO/LockFileCreateWrite
- IO/LockFileRecheckdatadirRead
- IO/LogicalChangesRead
- IO/LogicalChangesWrite
- IO/LogicalRewriteCheckpointSync
- IO/LogicalRewriteMappingSync
- IO/LogicalRewriteMappingWrite
- IO/LogicalRewriteSync
- IO/LogicalRewriteTruncate
- IO/LogicalRewriteWrite
- IO/LogicalSubxactRead
- IO/LogicalSubxactWrite
- IO/RelationMapRead
- IO/RelationMapReplace
- IO/RelationMapSync
- IO/RelationMapWrite
- IO/ReorderBufferRead
- IO/ReorderBufferWrite
- IO/ReorderLogicalMappingRead
- IO/ReplicationSlotRead
- IO/ReplicationSlotRestoreSync
- IO/ReplicationSlotSync
- IO/ReplicationSlotWrite
- IO/SlruFlushSync
- IO/SlruRead
- IO/SlruSync
- IO/SlruWrite
- IO/SnapbuildRead
- IO/SnapbuildSync
- IO/SnapbuildWrite
- IO/TimelineHistoryFileSync
- IO/TimelineHistoryFileWrite
- IO/TimelineHistoryRead
- IO/TimelineHistorySync
- IO/TimelineHistoryWrite
- IO/TwophaseFileRead
- IO/TwophaseFileSync
- IO/TwophaseFileWrite
- IO/VersionFileSync
- IO/VersionFileWrite
- IO/WalBootstrapSync
- IO/WalBootstrapWrite
- IO/WalCopyRead
- IO/WalCopySync
- IO/WalCopyWrite
- IO/WalInitSync
- IO/WalInitWrite
- IO/WalRead
- IO/WalSummaryRead
- IO/WalSummaryWrite
- IO/WalSync
- IO/WalSyncMethodAssign
- IO/WalWrite
- IO/WalsenderTimelineHistoryRead
- IPC/AppendReady
- IPC/ArchiveCleanupCommand
- IPC/ArchiveCommand
- IPC/BackendTermination
- IPC/BackupWaitWalArchive
- IPC/BgworkerShutdown
- IPC/BgworkerStartup
- IPC/BtreePage
- IPC/BufferIo
- IPC/CheckpointDelayComplete
- IPC/CheckpointDelayStart
- IPC/CheckpointDone
- IPC/CheckpointStart
- IPC/ExecuteGather
- IPC/HashBatchAllocate
- IPC/HashBatchElect
- IPC/HashBatchLoad
- IPC/HashBuildAllocate
- IPC/HashBuildElect
- IPC/HashBuildHashInner
- IPC/HashBuildHashOuter
- IPC/HashGrowBatchesDecide
- IPC/HashGrowBatchesElect
- IPC/HashGrowBatchesFinish
- IPC/HashGrowBatchesReallocate
- IPC/HashGrowBatchesRepartition
- IPC/HashGrowBucketsElect
- IPC/HashGrowBucketsReallocate
- IPC/HashGrowBucketsReinsert
- IPC/LogicalApplySendData
- IPC/LogicalParallelApplyStateChange
- IPC/LogicalSyncData
- IPC/LogicalSyncStateChange
- IPC/MessageQueueInternal
- IPC/MessageQueuePutMessage
- IPC/MessageQueueReceive
- IPC/MessageQueueSend
- IPC/MultixactCreation
- IPC/ParallelBitmapScan
- IPC/ParallelCreateIndexScan
- IPC/ParallelFinish
- IPC/ProcSignalBarrier
- IPC/ProcarrayGroupUpdate
- IPC/Promote
- IPC/RecoveryConflictSnapshot
- IPC/RecoveryConflictTablespace
- IPC/RecoveryEndCommand
- IPC/RecoveryPause
- IPC/ReplicationOriginDrop
- IPC/ReplicationSlotDrop
- IPC/RestoreCommand
- IPC/SafeSnapshot
- IPC/SyncRep
- IPC/WalReceiverExit
- IPC/WalReceiverUpstreamCatchup
- IPC/WalReceiverWaitStart
- IPC/WalSummaryReady
- IPC/XactGroupUpdate
- Lock/advisory
- Lock/applytransaction
- Lock/extend
- Lock/frozenid
- Lock/object
- Lock/page
- Lock/relation
- Lock/spectoken
- Lock/transactionid
- Lock/tuple
- Lock/userlock
- Lock/virtualxid
- LWLock/AddinShmemInit
- LWLock/AioUringCompletion
- LWLock/AioWorkerSubmissionQueue
- LWLock/AutoFile
- LWLock/Autovacuum
- LWLock/AutovacuumSchedule
- LWLock/BackgroundWorker
- LWLock/BtreeVacuum
- LWLock/BufferContent
- LWLock/BufferMapping
- LWLock/Checkpoint
- LWLock/CheckpointerComm
- LWLock/CommitTs
- LWLock/CommitTsBuffer
- LWLock/CommitTsSLRU
- LWLock/ControlFile
- LWLock/DSMRegistry
- LWLock/DSMRegistryDSA
- LWLock/DSMRegistryHash
- LWLock/DynamicSharedMemoryControl
- LWLock/InjectionPoint
- LWLock/LockFastPath
- LWLock/LockManager
- LWLock/LogicalRepLauncherDSA
- LWLock/LogicalRepLauncherHash
- LWLock/LogicalRepWorker
- LWLock/MultiXactGen
- LWLock/MultiXactMemberBuffer
- LWLock/MultiXactMemberSLRU
- LWLock/MultiXactOffsetBuffer
- LWLock/MultiXactOffsetSLRU
- LWLock/MultiXactTruncation
- LWLock/NotifyBuffer
- LWLock/NotifyQueue
- LWLock/NotifyQueueTail
- LWLock/NotifySLRU
- LWLock/OidGen
- LWLock/OldSnapshotTimeMap
- LWLock/ParallelAppend
- LWLock/ParallelBtreeScan
- LWLock/ParallelHashJoin
- LWLock/ParallelQueryDSA
- LWLock/ParallelVacuumDSA
- LWLock/PerSessionDSA
- LWLock/PerSessionRecordType
- LWLock/PerSessionRecordTypmod
- LWLock/PerXactPredicateList
- LWLock/PgStatsDSA
- LWLock/PgStatsData
- LWLock/PgStatsHash
- LWLock/PredicateLockManager
- LWLock/ProcArray
- LWLock/RelCacheInit
- LWLock/RelationMapping
- LWLock/ReplicationOrigin
- LWLock/ReplicationOriginState
- LWLock/ReplicationSlotAllocation
- LWLock/ReplicationSlotControl
- LWLock/ReplicationSlotIO
- LWLock/SInvalRead
- LWLock/SInvalWrite
- LWLock/SerialBuffer
- LWLock/SerialControl
- LWLock/SerialSLRU
- LWLock/SerializableFinishedList
- LWLock/SerializablePredicateList
- LWLock/SerializableXactHash
- LWLock/SharedTidBitmap
- LWLock/SharedTupleStore
- LWLock/ShmemIndex
- LWLock/SubtransBuffer
- LWLock/SubtransSLRU
- LWLock/SyncRep
- LWLock/SyncScan
- LWLock/TablespaceCreate
- LWLock/TwoPhaseState
- LWLock/WALBufMapping
- LWLock/WALInsert
- LWLock/WALSummarizer
- LWLock/WALWrite
- LWLock/WaitEventCustom
- LWLock/WrapLimitsVacuum
- LWLock/XactBuffer
- LWLock/XactSLRU
- LWLock/XactTruncation
- LWLock/XidGen
- Timeout/BaseBackupThrottle
- Timeout/CheckpointWriteDelay
- Timeout/PgSleep
- Timeout/RecoveryApplyDelay
- Timeout/RecoveryRetrieveRetryInterval
- Timeout/RegisterSyncRequest
- Timeout/SpinDelay
- Timeout/VacuumDelay
- Timeout/VacuumTruncate
- Timeout/WalSummarizerError
14.18 - [[metric:wal_bytes]]
WAL bytes generated over the observation interval.
Referenced by wait events
- Activity/RecoveryWalStream
- Activity/WalReceiverMain
- Activity/WalSenderMain
- Activity/WalSummarizerWal
- Activity/WalWriterMain
- Client/LibpqwalreceiverConnect
- Client/LibpqwalreceiverReceive
- Client/WalSenderWaitForWal
- Client/WalSenderWriteData
- IO/WalBootstrapSync
- IO/WalBootstrapWrite
- IO/WalCopyRead
- IO/WalCopySync
- IO/WalCopyWrite
- IO/WalInitSync
- IO/WalInitWrite
- IO/WalRead
- IO/WalSummaryRead
- IO/WalSummaryWrite
- IO/WalSync
- IO/WalSyncMethodAssign
- IO/WalWrite
- IO/WalsenderTimelineHistoryRead
- IPC/BackupWaitWalArchive
- IPC/WalReceiverExit
- IPC/WalReceiverUpstreamCatchup
- IPC/WalReceiverWaitStart
- IPC/WalSummaryReady
- LWLock/WALBufMapping
- LWLock/WALInsert
- LWLock/WALSummarizer
- Timeout/WalSummarizerError
14.19 - [[metric:wal_fpi]]
Full-page images generated in WAL.
Referenced by wait events
14.20 - [[metric:wal_sync_time]]
Time spent synchronizing WAL to durable storage.
Referenced by wait events
14.21 - [[metric:wal_write_time]]
Time spent writing WAL.
Referenced by wait events
- Activity/RecoveryWalStream
- Activity/WalReceiverMain
- Activity/WalSenderMain
- Activity/WalSummarizerWal
- Activity/WalWriterMain
- Client/LibpqwalreceiverConnect
- Client/LibpqwalreceiverReceive
- Client/WalSenderWaitForWal
- Client/WalSenderWriteData
- IO/WalBootstrapSync
- IO/WalBootstrapWrite
- IO/WalCopyRead
- IO/WalCopySync
- IO/WalCopyWrite
- IO/WalInitSync
- IO/WalInitWrite
- IO/WalRead
- IO/WalSummaryRead
- IO/WalSummaryWrite
- IO/WalSync
- IO/WalSyncMethodAssign
- IO/WalWrite
- IO/WalsenderTimelineHistoryRead
- IPC/BackupWaitWalArchive
- IPC/WalReceiverExit
- IPC/WalReceiverUpstreamCatchup
- IPC/WalReceiverWaitStart
- IPC/WalSummaryReady
- LWLock/WALBufMapping
- LWLock/WALSummarizer
- LWLock/WALWrite
- Timeout/WalSummarizerError
14.22 - [[metric:xact_slru_io]]
Reads and writes for the transaction-status SLRU.