Thread: upping checkpoints on production server
All this talk of checkpoints got me wondering if I have them set at an optimum level on my production servers. I noticed the following in the docs: "There will be at least one 16 MB segment file, and will normally not be more than 2 * checkpoint_segments + 1 files. You can use this to estimate space requirements for WAL. Ordinarily, when old log segment files are no longer needed, they are recycled (renamed to become the next segments in the numbered sequence). If, due to a short-term peak of log output rate, there are more than 2 * checkpoint_segments + 1 segment files, the unneeded segment files will be deleted instead of recycled until the system gets back under this limit." In .conf file I have default checkpoints set to 3, but I noticed that in my pg_xlog directory I always seem to have at least 8 log files. Since this is more than the suggested 7, I'm wondering if this means I ought to bump my checkpoint segments up to 4? I don't really want to bump it up unnecessarily as quick recover time is important on this box, however if i would get an overall performance boost it seems like it would be worth it, and given that I seem to be using more than the default number anyways... I've always treated wal logs as self maintaining, am I over analyzing this? Another thought popped into my head, is it just coincidence that I always seem to have 8 files and that wal_buffers defaults to 8? Seems like it's not but I love a good conspiracy theory. Robert Treat -- Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
Robert Treat <xzilla@users.sourceforge.net> writes: > In .conf file I have default checkpoints set to 3, but I noticed that in > my pg_xlog directory I always seem to have at least 8 log files. Since > this is more than the suggested 7, I'm wondering if this means I ought > to bump my checkpoint segments up to 4? Hm. What is the typical delta in the mod times of the log files? It sounds like you are in a regime where checkpoints are always triggered by checkpoint_segments and never by checkpoint_timeout, in which case increasing the former might be a good idea. Or decrease the latter, but that could put a drag on performance. regards, tom lane
On Wed, 2003-09-24 at 17:57, Tom Lane wrote: > Robert Treat <xzilla@users.sourceforge.net> writes: > > In .conf file I have default checkpoints set to 3, but I noticed that in > > my pg_xlog directory I always seem to have at least 8 log files. Since > > this is more than the suggested 7, I'm wondering if this means I ought > > to bump my checkpoint segments up to 4? > > Hm. What is the typical delta in the mod times of the log files? It > sounds like you are in a regime where checkpoints are always triggered > by checkpoint_segments and never by checkpoint_timeout, in which case > increasing the former might be a good idea. Or decrease the latter, > but that could put a drag on performance. > # ls -lht /var/lib/pgsql/data/pg_xlog/ total 129M -rw------- 1 postgres postgres 16M Sep 25 11:12 0000006E00000059 -rw------- 1 postgres postgres 16M Sep 25 11:12 0000006E0000005A -rw------- 1 postgres postgres 16M Sep 25 11:08 0000006E00000058 -rw------- 1 postgres postgres 16M Sep 25 11:05 0000006E0000005F -rw------- 1 postgres postgres 16M Sep 25 11:02 0000006E0000005E -rw------- 1 postgres postgres 16M Sep 25 10:59 0000006E0000005D -rw------- 1 postgres postgres 16M Sep 25 10:55 0000006E0000005B -rw------- 1 postgres postgres 16M Sep 25 10:51 0000006E0000005C #ls -lht /var/lib/pgsql/data/pg_xlog/ total 129M -rw------- 1 postgres postgres 16M Sep 25 10:52 0000006E00000054 -rw------- 1 postgres postgres 16M Sep 25 10:51 0000006E00000053 -rw------- 1 postgres postgres 16M Sep 25 10:49 0000006E00000052 -rw------- 1 postgres postgres 16M Sep 25 10:45 0000006E00000059 -rw------- 1 postgres postgres 16M Sep 25 10:40 0000006E00000057 -rw------- 1 postgres postgres 16M Sep 25 10:37 0000006E00000058 -rw------- 1 postgres postgres 16M Sep 25 10:33 0000006E00000056 -rw------- 1 postgres postgres 16M Sep 25 10:29 0000006E00000055 from the 7.4 docs: "Checkpoints are fairly expensive because they force all dirty kernel buffers to disk using the operating system sync() call. Busy servers may fill checkpoint segment files too quickly, causing excessive checkpointing." it goes on to mention checkpoint_warning, which I don't have in 7.3, but I think this is a case where I'd likely see those warnings. The server in question has a fairly high write/read ratio and is fairly busy (over 100 tps iirc). since more often than not I don't make it to 5 minutes, seems like upping checkpoint segments is the way to go, right? Robert Treat -- Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL