CheckpointWriteDelay

CheckpointWriteDelay appears when a process is deliberately pausing (i.e., sleeping) to throttle the rate of I/O during a checkpoint.
This is not an indication of a problem or contention—it's a controlled delay implemented to avoid overwhelming the I/O subsystem.

What does it mean?

A checkpoint is the process of flushing "dirty" (modified) data from memory (shared_buffers) to the permanent storage. If the checkpointer flushed everything at once, it would saturate your disk I/O, making the database unresponsive
To prevent this "I/O spike," PostgreSQL uses a setting called checkpoint_completion_target.
Instead of writing as fast as possible, the checkpointer calculates a "speed limit." It writes a few pages, then sleeps for a short duration to ensure the total checkpoint duration is spread out over time.
During those intentional sleep intervals, the checkpointer process reports the wait event CheckpointWriteDelay.
This behavior is normal and expected during checkpoints.