Thread

  1. Re: [PATCH] Expose checkpoint timestamp and duration in pg_stat_checkpointer

    Soumya S Murali <soumyamurali.work@gmail.com> — 2025-11-28T04:53:54Z

    Hi all,
    
    I have updated the code based on the feedback received to my earlier
    mails and prepared a patch for further review. In this patch, I have
    renamed the checkpoint_total_time to last_checkpoint_duration,
    stats_reset has been kept as the last column following the usual
    pattern, last_checkpoint_duration and last_checkpoint_time will now be
    overwritten per checkpoint and also have removed unnecessary lines as
    per the usual format. I had successfully verified the checkpointer
    duration with different write loads and I am  attaching the
    observations for further reference.
    
    pgbench -c 8 -j 8 -T 30 -p 55432 postgres
    pgbench (19devel)
    starting vacuum...end.
    transaction type: <builtin: TPC-B (sort of)>
    scaling factor: 50
    query mode: simple
    number of clients: 8
    number of threads: 8
    maximum number of tries: 1
    duration: 30 s
    number of transactions actually processed: 55936
    number of failed transactions: 0 (0.000%)
    latency average = 4.290 ms
    initial connection time = 7.107 ms
    tps = 1864.846690 (without initial connection time)
    
    pgbench -c 16 -j 8 -T 60 -p 55432 postgres
    pgbench (19devel)
    starting vacuum...end.
    transaction type: <builtin: TPC-B (sort of)>
    scaling factor: 50
    query mode: simple
    number of clients: 16
    number of threads: 8
    maximum number of tries: 1
    duration: 60 s
    number of transactions actually processed: 196974
    number of failed transactions: 0 (0.000%)
    latency average = 4.873 ms
    initial connection time = 12.535 ms
    tps = 3283.407286 (without initial connection time)
    postgres=# SELECT last_checkpoint_duration, last_checkpoint_time,
    write_time, sync_time, buffers_written FROM pg_stat_checkpoint
    er;
     last_checkpoint_duration |       last_checkpoint_time       |
    write_time | sync_time | buffers_written
    --------------------------+----------------------------------+------------+-----------+-----------------
                        23940 | 2025-11-28 10:02:29.298905+05:30 |
    104873 |       811 |            3468
    (1 row)
    CHECKPOINT
    sleep 1
    postgres=# SELECT last_checkpoint_duration, last_checkpoint_time,
    write_time, sync_time, buffers_written FROM pg_stat_checkpointer;
     last_checkpoint_duration |       last_checkpoint_time       |
    write_time | sync_time | buffers_written
    --------------------------+----------------------------------+------------+-----------+-----------------
                          332 | 2025-11-28 10:03:57.828072+05:30 |
    104979 |       857 |           10453
    (1 row)
    2025-11-28 10:03:57.828 IST [11343] LOG:  checkpoint complete
    (immediate): wrote 6985 buffers (42.6%), wrote 11 SLRU buffers; 0 WAL
    file(s) added, 0 removed, 32 recycled; write=0.106 s, sync=0.046 s,
    total=0.332 s; sync files=23, longest=0.004 s, average=0.002 s;
    distance=538440 kB, estimate=540445 kB; lsn=0/84DDA138, redo
    lsn=0/84DDA0E0
    
    I hope these observations are helpful for further analysis. Thank you
    for the earlier reviews and helpful suggestions. Looking forward to
    more feedback.
    
    Regards,
    Soumya