Observation is that whenever a checkpoint happens and the wal_level configured is hot_standby then one standby snapshot XLOG gets written with the information of "running transaction".
So if first time checkpoint happened at specified interval, it will create new XLOG in LogStandbySnapshot, due to which checkpoint operation doesn't get skipped again on next interval. This is okay if there are any running transactions, but it seems XLOG is written even if there is no running xact. As per the analysis below is the code snippet doing this: running = GetRunningTransactionData(); LogCurrentRunningXacts(running); So irrespective of value of running, snapshot is getting logged. So We can modify to change this in function LogStandbySnapshot as below: running = GetRunningTransactionData(); if (running->xcnt > 0) LogCurrentRunningXacts(running); So this check will make sure that if there is no operation happening i.e. no new running transaction, then no need to log running transaction snapshot and hence further checkpoint operations will be skipped. Let me know if I am missing something? With Regards, Amit Kapila.