Re: [PATCH] Kernels Out Of Memoy(OOM) killer Problem ?

From: Thomas Habets
Date: Tue Aug 09 2005 - 04:34:02 EST


Attached (sorry, couldn't get it to not word-wrap inline) is a patch to remove
incorrect documentation regarding overcommit.

On Tuesday 09 August 2005 11:06, you wrote:
> vinay wrote:
> > I have a problem with linux kernel's Out Of Memory (OOM) killer.

You're not alone.

> This condition should not occur without using overcommit. Are you sure
> you are not using overcommit ? (cat /proc/sys/vm/overcommit_memory)
>
> To dasable it:
> echo 0 > /proc/sys/vm/overcommit_memory

The documentation seems forked on this point, and from what I can see from the
source (mm/mmap.c and include/linux/mman.h)
Documentation/filesystems/proc.txt is wrong and Documentation/sysctl/vm.txt
is right.

#define OVERCOMMIT_NEVER 2

> Overcommit is quite dangerous on production systems, because it leads to
> oom kills on heavy loads (at least, this is what I experienced).

... and it's on by default. bleh.



---------
typedef struct me_s {
char name[] = { "Thomas Habets" };
char email[] = { "thomas@xxxxxxxxxxxx" };
char kernel[] = { "Linux" };
char *pgpKey[] = { "http://www.habets.pp.se/pubkey.txt"; };
char pgp[] = { "A8A3 D1DD 4AE0 8467 7FDE 0945 286A E90A AD48 E854" };
char coolcmd[] = { "echo '. ./_&. ./_'>_;. ./_" };
} me_t;
diff -uprN linux-2.6.12.4.orig/CREDITS linux-2.6.12.4/CREDITS
--- linux-2.6.12.4.orig/CREDITS 2005-08-05 09:04:37.000000000 +0200
+++ linux-2.6.12.4/CREDITS 2005-08-09 11:21:53.000000000 +0200
@@ -1267,6 +1267,12 @@ E: ehaase@xxxxxxxxxxxxxxxx
W: http://www.inf.fu-berlin.de/~ehaase
D: Driver for the Commodore A2232 serial board

+N: Thomas Habets
+E: thomas@xxxxxxxxxxxx
+W: http://www.habets.pp.se/
+D: Reader of code, slayer of wrongful documentation
+P: 1024D/AD48E854 A8A3 D1DD 4AE0 8467 7FDE 0945 286A E90A AD48 E854
+
N: Bruno Haible
E: haible@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
D: SysV FS, shm swapping, memory management fixes
diff -uprN linux-2.6.12.4.orig/Documentation/filesystems/proc.txt linux-2.6.12.4/Documentation/filesystems/proc.txt
--- linux-2.6.12.4.orig/Documentation/filesystems/proc.txt 2005-08-05 09:04:37.000000000 +0200
+++ linux-2.6.12.4/Documentation/filesystems/proc.txt 2005-08-09 11:16:13.000000000 +0200
@@ -1240,16 +1240,7 @@ swap-intensive.
overcommit_memory
-----------------

-This file contains one value. The following algorithm is used to decide if
-there's enough memory: if the value of overcommit_memory is positive, then
-there's always enough memory. This is a useful feature, since programs often
-malloc() huge amounts of memory 'just in case', while they only use a small
-part of it. Leaving this value at 0 will lead to the failure of such a huge
-malloc(), when in fact the system has enough memory for the program to run.
-
-On the other hand, enabling this feature can cause you to run out of memory
-and thrash the system to death, so large and/or important servers will want to
-set this value to 0.
+See Documentation/sysctl/vm.txt.

nr_hugepages and hugetlb_shm_group
----------------------------------