- 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 kill -9>. To prevent unpredictable
- process termination, use:
+ 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.
+
+
+ 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):
+ Out of Memory: Killed process 12345 (postmaster).
+
+
+
+ To avoid this situation, run
PostgreSQL
+ 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 vm_enough_memory>
+ in the file 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
+sysctl -w vm.overcommit_memory=2
+
+ for strict mode or
sysctl -w vm.overcommit_memory=3
+ for paranoid mode, or placing an equivalent entry in
+ /etc/sysctl.conf>.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
Note, you will need enough swap space to cover all your memory needs.