few WAL files.
+
+
+ CHECKPOINT_WARNING (integer)
+
+ Send a message to the server logs if checkpoints caused by the
+ filling of checkpoint segment files happens more frequently than
+ this number of seconds. Zero turns off the warning.
+
+
+
+
COMMIT_DELAY (integer)
-
+
Write-Ahead Logging (WAL)
correspondingly increase shared memory usage.
+ 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. If such forced checkpoints happen
+ more frequently than CHECKPOINT_WARNING seconds,
+ a message, will be output to the server logs recommending increasing
+ CHECKPOINT_SEGMENTS.
+
+
The COMMIT_DELAY parameter defines for how many
microseconds the backend will sleep after writing a commit
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.296 2002/11/15 01:57:26 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.297 2002/11/15 02:44:55 momjian Exp $
*
* NOTES
*
int PreAuthDelay = 0;
int AuthenticationTimeout = 60;
int CheckPointTimeout = 300;
+int CheckPointWarning = 30;
+time_t LastSignalledCheckpoint = 0;
bool log_hostname; /* for ps display */
bool LogSourcePort;
if (CheckPostmasterSignal(PMSIGNAL_DO_CHECKPOINT))
{
+ if (CheckPointWarning != 0)
+ {
+ /*
+ * This only times checkpoints forced by running out of
+ * segment files. Other checkpoints could reduce
+ * the frequency of forced checkpoints.
+ */
+ time_t now = time(NULL);
+
+ if (now - LastSignalledCheckpoint < CheckPointWarning)
+ elog(LOG, "Checkpoint segments are being created too frequently (%d secs)\n
+ Consider increasing CHECKPOINT_SEGMENTS",
+ now - LastSignalledCheckpoint);
+ LastSignalledCheckpoint = now;
+ }
+
/*
* Request to schedule a checkpoint
*
* command, configuration file, and command line options.
* See src/backend/utils/misc/README for more information.
*
- * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.105 2002/11/15 01:57:27 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.106 2002/11/15 02:44:57 momjian Exp $
*
* Copyright 2000 by PostgreSQL Global Development Group
* Written by Peter Eisentraut
.
300, 30, 3600, NULL, NULL
},
+ {
+ {"checkpoint_warning", PGC_SIGHUP}, &CheckPointWarning,
+ 30, 0, INT_MAX, NULL, NULL
+ },
+
{
{"wal_buffers", PGC_POSTMASTER}, &XLOGbuffers,
8, 4, INT_MAX, NULL, NULL
#
#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each
#checkpoint_timeout = 300 # range 30-3600, in seconds
+#checkpoint_warning = 30 # 0 is off, in seconds
#
#commit_delay = 0 # range 0-100000, in microseconds
#commit_siblings = 5 # range 1-1000
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: xlog.h,v 1.39 2002/09/26 22:58:34 tgl Exp $
+ * $Id: xlog.h,v 1.40 2002/11/15 02:44:57 momjian Exp $
*/
#ifndef XLOG_H
#define XLOG_H
/* these variables are GUC parameters related to XLOG */
extern int CheckPointSegments;
+extern int CheckPointWarning;
extern int XLOGbuffers;
extern int XLOG_DEBUG;
extern char *XLOG_sync_method;