# Activity waits

> Background processes sleeping in their main loop until work arrives.
---

`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 {#how-to-read}

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 {#top-events}

| Event | Expected process |
| --- | --- |
| [AutovacuumMain](autovacuum-main/) | Autovacuum launcher between scheduling cycles |
| [CheckpointerMain](checkpointer-main/) | Checkpointer awaiting work |
| [WalWriterMain](wal-writer-main/) | WAL writer main loop |
| [ArchiverMain](archiver-main/) | Archiver waiting for a completed segment |
| [WalReceiverMain](wal-receiver-main/) | WAL receiver main loop |
| [RecoveryWalStream](recovery-wal-stream/) | Startup process waiting for streamed WAL |
| [IoWorkerMain](io-worker-main/) | PG18 asynchronous I/O worker awaiting work |

## Common misreads {#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.

---

Section pages:

- [Activity: ArchiverMain](/activity/archiver-main/): Waiting in main loop of archiver process
- [Activity: AutovacuumMain](/activity/autovacuum-main/): Waiting in main loop of autovacuum launcher process
- [Activity: BgwriterHibernate](/activity/bgwriter-hibernate/): Waiting in background writer process, hibernating
- [Activity: BgwriterMain](/activity/bgwriter-main/): Waiting in main loop of background writer process
- [Activity: CheckpointerMain](/activity/checkpointer-main/): Waiting in main loop of checkpointer process
- [Activity: CheckpointerShutdown](/activity/checkpointer-shutdown/): Waiting for checkpointer process to be terminated
- [Activity: IoWorkerMain](/activity/io-worker-main/): Waiting in main loop of IO Worker process
- [Activity: LogicalApplyMain](/activity/logical-apply-main/): Waiting in main loop of logical replication apply process
- [Activity: LogicalLauncherMain](/activity/logical-launcher-main/): Waiting in main loop of logical replication launcher process
- [Activity: LogicalParallelApplyMain](/activity/logical-parallel-apply-main/): Waiting in main loop of logical replication parallel apply process
- [Activity: PgStatMain](/activity/pg-stat-main/): Waiting in main loop of statistics collector process.
- [Activity: RecoveryWalStream](/activity/recovery-wal-stream/): Waiting in main loop of startup process for WAL to arrive, during streaming recovery
- [Activity: ReplicationSlotsyncMain](/activity/replication-slotsync-main/): Waiting in main loop of slot sync worker
- [Activity: ReplicationSlotsyncShutdown](/activity/replication-slotsync-shutdown/): Waiting for slot sync worker to shut down
- [Activity: SysloggerMain](/activity/syslogger-main/): Waiting in main loop of syslogger process
- [Activity: WalReceiverMain](/activity/wal-receiver-main/): Waiting in main loop of WAL receiver process
- [Activity: WalSenderMain](/activity/wal-sender-main/): Waiting in main loop of WAL sender process
- [Activity: WalSummarizerWal](/activity/wal-summarizer-wal/): Waiting in WAL summarizer for more WAL to be generated
- [Activity: WalWriterMain](/activity/wal-writer-main/): Waiting in main loop of WAL writer process
