LWLock: MultiXactMemberBuffer
Waiting for I/O on a multixact member SLRU buffer
PostgreSQL wait event dossier
ClassLWLock
Event
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
Sessions waiting on LWLock/MultiXactMemberBuffer
Current LWLock cohort
Lock and relation context for these sessions
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
- 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]