doc patch - linux memory handling - Mailing list pgsql-patches

From Andrew Dunstan
Subject doc patch - linux memory handling
Date
Msg-id 3F4621E0.2020308@dunslane.net
Whole thread Raw
Responses Re: doc patch - linux memory handling
Re: doc patch - linux memory handling
List pgsql-patches
As discussed on Hackers.

enjoy

andrew
Index: doc/src/sgml/runtime.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/runtime.sgml,v
retrieving revision 1.200
diff -c -w -r1.200 runtime.sgml
*** doc/src/sgml/runtime.sgml    17 Aug 2003 22:19:10 -0000    1.200
--- doc/src/sgml/runtime.sgml    21 Aug 2003 16:57:43 -0000
***************
*** 3068,3081 ****
         </para>

         <para>
!         Linux has poor default memory overcommit behavior.  Rather than
!         failing if it can not reserve enough memory, it returns success,
!         but later fails when the memory can't be mapped and terminates
!         the application with <literal>kill -9</>.  To prevent unpredictable
!         process termination, use:
  <programlisting>
  sysctl -w vm.overcommit_memory=3
  </programlisting>
          Note, you will need enough swap space to cover all your memory needs.
         </para>
        </listitem>
--- 3068,3125 ----
         </para>

         <para>
!     Linux kernel version 2.4.* has poor default memory overcommit
!     behavior, which can result in the postmaster being killed by the
!     kernel due to memory demands by another process if the system
!     runs out of memory.
!     </para>
!
!        <para>
!     The symptom of this occuring is a kernel message looking like
!     this (consult your system documentation and configuration on
!     where to look for such a message):
! <programlisting>
!  Out of Memory: Killed process 12345 (postmaster).
! </programlisting>
!     </para>
!
!        <para>
!     To avoid this situation, run postgres on a machine where you
!     can be sure that other processes will not run the machine out
!     of memory. If your kernel supports strict and/or paranoid modes
!     of overcommit handling, you can also relieve this problem by
!     altering the system's default behaviour. This can be determined
!     by examining the function <varname>vm_enough_memory</>
!     in the file <filename>mm/mmap.c</>in the kernel source.
!     If this file reveals that strict and/or paranoid modes are
!     supported by your kernel, turn one of these modes on by using
! <programlisting>
! sysctl -w vm.overcommit_memory=2
! </programlisting>
!      for strict mode or
  <programlisting>
  sysctl -w vm.overcommit_memory=3
  </programlisting>
+     for paranoid mode, or placing an equivalent entry in
+     <filename>/etc/sysctl.conf</>.
+     </para>
+
+        <para>
+     Warning: using these settings in a kernel which does not support
+     these modes will almost certainly increase the danger of the
+     kernel killing the postmaster, rather than reducing it.
+     If in any doubt, consult a kernel expert or your kernel vendor.
+     </para>
+
+        <para>
+     These modes are expected to be supported in all 2.6 and later
+     kernels. Some vendor 2.4 kernels may also support these modes.
+     However, it is known that some vendor documents suggest that
+     they support them while examination of the kernel source reveals
+     that they do not.
+     </para>
+
+        <para>
          Note, you will need enough swap space to cover all your memory needs.
         </para>
        </listitem>

pgsql-patches by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: New translation: Norwegian translation of PostgreSQL
Next
From: Neil Conway
Date:
Subject: Re: doc patch - linux memory handling