On 2015-10-22 09:52:25 -0400, Robert Haas wrote: > On Mon, Oct 19, 2015 at 6:10 AM, Andres Freund <and...@anarazel.de> wrote: > > 1) The progress passed to CheckpointWriteDelay() will often be wrong - > > it's calculated as num_written / num_to_write, but num_written is only > > incremented if the buffer hasn't since independently been written > > out. That's bad because it mean's we'll think we're further and > > further behind if there's independent writeout activity. > > > > Simple enough to fix, we gotta split num_written into num_written > > (for stats purposes) and num_processed (for progress). > > > > This is pretty much a bug, but I'm a slightly worried about > > backpatching a fix because it can have a rather noticeable > > behavioural impact. > > I think this is an algorithmic improvement, not a bug fix.
progress, passed to CheckpointWriteDelay, is defined as: * 'progress' is an estimate of how much of the work has been done, as a * fraction between 0.0 meaning none, and 1.0 meaning all done. passing a potentially wildly inaccurate value (like close to 0, because most buffers have since been displaced) seems more like a bug than an algorithmic improvement... I can't see how that could have been intentional. But I'm now wild on backpatching these, so it's probably a moot distinction. > > I think the sleep time should be computed adaptively based on the > > number of buffers remaining and the remaining time. There's probably > > better formulations, but that seems like an easy enough improvement > > and considerably better than now. > > One thing to keep in mind here is that somebody did work a few years > ago to reduce the number of wake-ups per second that PostgreSQL > generates when idle. As far as I can see checkpointing hasn't been touched in the course of that work. For power usage it's probably not bad to complete checkpoints faster than necessary and then sleep for longer :/. So it might be good to have an upper limit to the sleep time. > I like the idea of an adaptive sleep time. Good. I do too ;) Greetings, Andres Freund -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers