Remove postmaster.c's check that NBuffers is at least twice MaxBackends.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 9 Mar 2008 04:56:28 +0000 (04:56 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 9 Mar 2008 04:56:28 +0000 (04:56 +0000)
With the addition of multiple autovacuum workers, our choices were to delete
the check, document the interaction with autovacuum_max_workers, or complicate
the check to try to hide that interaction.  Since this restriction has never
been adequate to ensure backends can't run out of pinnable buffers, it doesn't
really have enough excuse to live to justify the second or third choices.
Per discussion of a complaint from Andreas Kling (see also bug #3888).

This commit also removes several documentation references to this restriction,
but I'm not sure I got them all.

doc/src/sgml/config.sgml
src/backend/postmaster/postmaster.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample

index 6dbabd6910573e694b0d566a2c56208857696a5c..43c28b8e08352be788e7eeb2828babcec1996c36 100644 (file)
@@ -736,8 +736,7 @@ SET ENABLE_SEQSCAN TO OFF;
         memory buffers.  The default is typically 32 megabytes
         (<literal>32MB</>), but might be less if your kernel settings will
         not support it (as determined during <application>initdb</>).
-        This setting must be at least 128 kilobytes and at least 16
-        kilobytes times <xref linkend="guc-max-connections">.  (Non-default
+        This setting must be at least 128 kilobytes.  (Non-default
         values of <symbol>BLCKSZ</symbol> change the minimum.)  However,
         settings significantly higher than the minimum are usually needed
         for good performance.  Several tens of megabytes are recommended
index 585881883a79b33cc69db7168c159201733d6834..bb4a04962a64822fa2f25f23e5b5bbbb708d03d8 100644 (file)
@@ -688,16 +688,6 @@ PostmasterMain(int argc, char *argv[])
        /*
         * Check for invalid combinations of GUC settings.
         */
-       if (NBuffers < 2 * MaxBackends || NBuffers < 16)
-       {
-               /*
-                * Do not accept -B so small that backends are likely to starve for
-                * lack of buffers.  The specific choices here are somewhat arbitrary.
-                */
-               write_stderr("%s: the number of buffers (-B) must be at least twice the number of allowed connections (-N) and at least 16\n", progname);
-               ExitPostmaster(1);
-       }
-
        if (ReservedBackends >= MaxBackends)
        {
                write_stderr("%s: superuser_reserved_connections must be less than max_connections\n", progname);
index 3b26431a2f30bce193ef768a033478fbb4b6d44c..3657cf65888ef56486aa0e3a18595528517c0b5b 100644 (file)
@@ -1195,16 +1195,10 @@ static struct config_int ConfigureNamesInt[] =
        },
 
        /*
-        * Note: There is some postprocessing done in PostmasterMain() to make
-        * sure the buffers are at least twice the number of backends, so the
-        * constraints here are partially unused. Similarly, the superuser
-        * reserved number is checked to ensure it is less than the max backends
-        * number.
-        *
-        * MaxBackends is limited to INT_MAX/4 because some places compute
-        * 4*MaxBackends without any overflow check.  This check is made on
+        * Note: MaxBackends is limited to INT_MAX/4 because some places compute
+        * 4*MaxBackends without any overflow check.  This check is made in
         * assign_maxconnections, since MaxBackends is computed as MaxConnections
-        * + autovacuum_max_workers.
+        * plus autovacuum_max_workers.
         *
         * Likewise we have to limit NBuffers to INT_MAX/2.
         */
index 258a7d1a4f519942d23b3eef13ea54be9fbaf5d2..d3604c2d5c04851fbe432e093059c69ff2620cc1 100644 (file)
@@ -60,8 +60,7 @@
 #port = 5432                           # (change requires restart)
 #max_connections = 100                 # (change requires restart)
 # Note:  Increasing max_connections costs ~400 bytes of shared memory per 
-# connection slot, plus lock space (see max_locks_per_transaction).  You might
-# also need to raise shared_buffers to support more connections.
+# connection slot, plus lock space (see max_locks_per_transaction).
 #superuser_reserved_connections = 3    # (change requires restart)
 #unix_socket_directory = ''            # (change requires restart)
 #unix_socket_group = ''                        # (change requires restart)
 
 # - Memory -
 
-#shared_buffers = 32MB                 # min 128kB or max_connections*16kB
+#shared_buffers = 32MB                 # min 128kB
                                        # (change requires restart)
 #temp_buffers = 8MB                    # min 800kB
 #max_prepared_transactions = 5         # can be 0 or more