Wake up for latches in CheckpointWriteDelay().
Thomas Munro <tmunro@postgresql.org>
Wake up for latches in CheckpointWriteDelay(). The checkpointer shouldn't ignore its latch. Other backends may be waiting for it to drain the request queue. Hopefully real systems don't have a full queue often, but the condition is reached easily when shared_buffers is small. This involves defining a new wait event, which will appear in the pg_stat_activity view often due to spread checkpoints. Back-patch only to 14. Even though the problem exists in earlier branches too, it's hard to hit there. In 14 we stopped using signal handlers for latches on Linux, *BSD and macOS, which were previously hiding this problem by interrupting the sleep (though not reliably, as the signal could arrive before the sleep begins; precisely the problem latches address). Reported-by: Andres Freund <andres@anarazel.de> Reviewed-by: Andres Freund <andres@anarazel.de> Discussion: https://postgr.es/m/20220226213942.nb7uvb2pamyu26dj%40alap3.anarazel.de
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/monitoring.sgml | modified | +4 −0 |
| src/backend/postmaster/checkpointer.c | modified | +7 −1 |
| src/backend/utils/activity/wait_event.c | modified | +3 −0 |
| src/include/utils/wait_event.h | modified | +1 −0 |
Documentation touched
Discussion
- Checkpointer sync queue fills up / loops around pg_usleep() are bad 8 messages · 2022-02-26 → 2022-03-16