On Tue, 2004-12-14 at 23:31, Tom Lane wrote:
> Simon Riggs <[EMAIL PROTECTED]> writes:
> > DEBUG1 messages showed that there is an apparent limit of 255 xlog files
> > per checkpoint -
> 
> The volume-based checkpoint trigger code is
> 
>                 if (IsUnderPostmaster &&
>                     (openLogId != RedoRecPtr.xlogid ||
>                      openLogSeg >= (RedoRecPtr.xrecoff / XLogSegSize) +
>                      (uint32) CheckPointSegments))
>                 {
> #ifdef WAL_DEBUG
>                     if (XLOG_DEBUG)
>                         elog(LOG, "time for a checkpoint, signaling 
> bgwriter");
> #endif
>                     RequestCheckpoint(false);
>                 }
> 
> which now that I look at it obviously forces a checkpoint whenever
> xlogid (the upper half of XLogRecPtr) changes, ie every 4GB of WAL
> output.  I suppose on a high-performance platform it's possible that
> one would want checkpoints further apart than that, though the idea
> of plowing through multiple gigabytes of WAL in order to recover from
> a crash is a bit daunting.
> 
> It's not immediately obvious how to recast the comparison without
> either creating overflow bugs or depending on 64-bit-int arithmetic
> being available.  Thoughts?

Thanks for finding it. It was staring me in the face.

I'd say no code changes for 8.0, now we know what's causing it. A doc
patch to show the limit is probably just going to annoy the translators
at this stage also.

Reasons:
- you can recompile using larger XLogSegSize, if you care to
- the real answer is to reduce the xlog volume

-- 
Best Regards, Simon Riggs


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to