On Wed, 2 Apr 2008, mark wrote:
this really clear! Thannks!!
This is the first time someone new to this has ever said that about checkpoint tuning, which is quite the victory for all of us who worked toward the 8.3 functional and monitoring improvements in this area. Please keep posting the results after each change, this will make a great example for others to follow.
Based on what Tomasz suggested a day ago, I had changed settings to checkpoint_segments = 16 checkpoint_timeout = 20min checkpoint_completion_target = 0.8 checkpoints_timed | checkpoints_req | buffers_checkpoint | buffers_clean | 21 | 46 | 2218439 | 34158 | maxwritten_clean | buffers_backend | buffers_alloc 145 | 60447 | 2707259
That's near the upper limit for checkpoint_completion_target; you could bump that to 0.9 perhaps but I'd save that until after you get the segments tuned right. It's very good that you're now getting a decent balance of timed checkpoints in here, but as you can see from the buffers_* numbers the checkpoint activity is still almost all the writes on your system.
The nice place to be here is to where buffers_checkpoint is similar in size to buffers_clean+buffers_backend, that's how you know you've spread the checkpoint out enough that it's not swamping normal operation with its overhead.
Small tuning bit: based on the maxwritten_clean figures you're seeing here I would increase bgwriter_lru_maxpages from the default of 100 to 200.
i am fine with both WAL disk usage increasing and increase in time to recover from crash...
In that case, I'd say stop fooling around and just go to 100 segments or so based on how much things improved with the jump to 16. If that makes things get to where you want, then you can explore dropping down to a smaller setting one day. If it doesn't, you may need to consider other options here.
Increasing to 100 is approximately a 6X increase, so what you'd like to see is that instead of the current 96% checkpoint writes/4% other you'd end up with something 76% checkpoint/24% other. You may need to push to 200 or more segments to get even a true 50/50 balance, but we'll see; the way this works isn't completely linear. 100 is a pretty big setting for normal use.
-- * Greg Smith gsmith@xxxxxxxxxxxxx http://www.gregsmith.com Baltimore, MD -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general