OK, so v12.10.XX does not have the PFSC, so you should disable MAX_FILL_DATA_PAGE and see if that relieves the issue.
Art S. Kagel, President and Principal Consultant
ASK Database Management Corp.
Original Message:
Sent: Wed May 28, 2025 04:03 PM
From: Jacob Salomon
Subject: What triggers a blocking checkpoint?
Art and others who asked about our current release: IDS 12.10.FC9
Original Message:
Sent: 5/28/2025 1:37:00 PM
From: Art Kagel
Subject: RE: What triggers a blocking checkpoint?
Jacob:
On the new data, it looks like the long checkpoints are being caused by high transaction rates (hence the messages about the physical log and the "normal" page flush counts) that are causing the checkpoint to have to wait for many existing critical sections of client code to complete releasing that latch. The MAX_FILL_DATA_PAGES can be one cause of long critical sections, but there can be others, less easily worked around. As Andreas suggested, address this problem first as I suggested in my last post depending your version and config. If that doesn't solve it, then you can take the next steps.
Art
------------------------------
Art S. Kagel, President and Principal Consultant
ASK Database Management Corp.
www.askdbmgt.com
------------------------------
Original Message:
Sent: Wed May 28, 2025 01:25 PM
From: Marcus Haarmann
Subject: What triggers a blocking checkpoint?
Hi Jacob,
when looking at the numbers, you can see that the amount of pages dumped during the long
checkpoint was not significantly higher than the other ones.
I would have expected a huge increase in the number of dirty pages handled during the checkpoint.
Are you sure there is no I/O bottleneck? Caused by another process ?
In case you want to flush pages between the checkpoint interval, you need to configure the flushers,
in order to start flushing at x% of the configured LRU queues (which should be below the number of pages,
which are usually flushed).
Check with onstat -R for currently configured values.
In that case, server will start flushing between the checkpoints until the low percentage is reached.
Best,
Original Message:
Sent: 5/28/2025 12:41:00 PM
From: Jacob Salomon
Subject: RE: What triggers a blocking checkpoint?
Hats off (but not the kipa :-) to Art, and both Andreas's.
The overwhelming proportion of checkpoints last under 1/2 second, hough some go over 5 seconds. Nobody complains about those. But this morning had a 2-1/2 minute blockage. OUCH!
First Art: I indeed set up that 15-minute cron job. This morning I checked the online log and found, at 6:46 AM, the following:
05/28/25 06:43:25 Logical Log 2967450 - Backup Started
05/28/25 06:43:30 Logical Log 2967450 - Backup Completed
05/28/25 06:43:43 Physical Logging while in Critical Section: Number of pages logged in critcal section: 40 Remaining Phyical Log: 862792
05/28/25 06:43:46 Physical Logging while in Critical Section: Number of pages logged in critcal section: 80 Remaining Phyical Log: 862752
.... (total of 49 such lines)
05/28/25 06:46:05 Physical Logging while in Critical Section: Number of pages logged in critcal section: 1920 Remaining Phyical Log: 860893
05/28/25 06:46:08 Physical Logging while in Critical Section: Number of pages logged in critcal section: 1960 Remaining Phyical Log: 860852
05/28/25 06:46:18 Checkpoint Completed: duration was 157 seconds.
05/28/25 06:46:18 Wed May 28 - loguniq 2967451, logpos 0x3a163a8, timestamp: 0x304bd7d6 Interval: 2342399
05/28/25 06:46:18 Maximum server connections 415
05/28/25 06:46:18 Checkpoint Statistics - Avg. Txn Block Time 149.940, # Txns blocked 81, Plog used 186726, Llog used 124998
And yes, there was a 2-1/2 minute freeze-up starting at 6:43. So now, let's look at the 15-minute interval for the onstat -g ckp. (We don't need to see all 20 entries)
AUTO_CKPTS=On RTO_SERVER_RESTART=Off
Critical Sections Physical Log Logical Log
Clock Total Flush Block # Ckpt Wait Long # Dirty Dskflu Total Avg Total Avg
Interval Time Trigger LSN Time Time Time Waits Time Time Time Buffers /Sec Pages /Sec Pages /Sec
2342398 06:39:39 CKPTINTVL 2967448:0xc686018 4.6 4.6 0.0 3 0.0 0.0 0.0 150708 33112 244770 995 178586 725
2342399 06:46:17 CKPTINTVL 2967451:0x3a163a8 157.9 7.6 0.0 81 149.9 82.4 150.0 131521 17328 186726 473 124998 317
2342400 06:50:19 CKPTINTVL 2967454:0x2ce3280 2.5 2.5 0.0 2 0.0 0.0 0.0 141278 56862 306279 1234 150773 607
This is really disappointing! I had expected that middle one above to be caused by an LTXEHWM or a physical log over 75% full. Nope: It was the ordinary checkpoint triggered by the 4-minute setting.
So, as Thomas Edison was famous for saying: We have not failed; we have a method that does not work. And actually, it did tell us something: A direction where NOT to bother looking.
Now for Andreas L's thoughtful thesis. Bottom line:
$ onstat -c MAX_FILL_DATA_PAGES
1
Exactly as Andreas supposed. There is an oncheck command (-T?) to report on the fullness of pages within a TBLspace but in a database this size that's kinda impractical.
But I will recommend changing that onconfig parameter. Certainly worth a try!
Thanks much to all. I'll let y'all know if this solved it.
------------------------------
Jacob Salomon
Original Message:
Sent: Tue May 27, 2025 04:39 PM
From: Art Kagel
Subject: What triggers a blocking checkpoint?
Jacob:
Need more details like the reported trigger in the onstat -g ckp report or the supporting sysmaster table. Since only a short list of checkpoints are kept online, the best thing to do would be to set up a cron job to run every 15 mins from 6:00 until 10:00 daily and post or send me the output file(s).
Art
------------------------------
Art S. Kagel, President and Principal Consultant
ASK Database Management Corp.
www.askdbmgt.com