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>
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to