On Fri, 6 Jul 2007, Tom Lane wrote:
The problem is that it'd be very hard to track how far ahead of the recycling sweep hand we are, because that number has to be measured in usage-count-zero pages. I see no good way to know how many of the pages we scanned before have been touched (and given nonzero usage counts) unless we rescan them.
I've actually been working on how to address that specific problem without expressly tracking the contents of the buffer cache. When the background writer is called, it finds out how many buffers were allocated and how far the sweep point moved since the last call. From that, you can calculate how many buffers on average need to be scanned per allocation, which tells you something about the recently encountered density of 0-usage count buffers. My thought was to use that as an input to the computation for how far ahead to stay.
I've been doing moving averages for years and years, and I find that the multiplication approach works at least as well as explicitly storing the last K observations. It takes a lot less storage and arithmetic too.
I was simplifying the description just to comment on the range for K; I was using a multiplication approach for the computation.
-- * Greg Smith [EMAIL PROTECTED] http://www.gregsmith.com Baltimore, MD ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend