out_of_memory() heuristic broken for different mem configurations

Marcelo Tosatti (marcelo@conectiva.com.br)
Tue, 6 Nov 2001 09:40:51 -0200 (BRST)


Hi people,

While testing 2.4.14 VM on the 16GB machine testbox I've been able to
make the OOM killer not trigger correctly. The same usual workload: lots
of fillmem processes.

Looking at out_of_memory() I've found out that we will only kill a task if
we happen to call out_of_memory() ten times in one second.

That is completly variable on the system load: Taking into account that we
have we lots of processes inside try_to_free_pages() and the LRU list is
insanely HUGE (almost all pages were on the inactive list), I think this
"ten times in one second" just does not work.

Well, yes, its seems to be just a wrong magic number for this
setup/workload.

Linus, any suggestion to "fix" that ?

/proc tunable (eeek) ?

vmstat output:

13 7 2 3812816 2884 228 7648 42 28454 58 28430 295 1070 0 70 30
10 12 2 3880664 2640 204 7644 24 27754 28 27766 277 14650 0 92 8
17 5 1 3943404 2964 228 7656 22 31258 38 31276 303 10067 0 80 20
18 3 1 3998948 2708 220 7652 32 19434 46 19422 224 857 0 83 17

(end of swap)

23 1 1 4032960 2892 232 7648 16 24246 22 24252 235 997 0 72 28
22 1 1 4032960 2872 232 7648 0 0 0 0 106 13 0 99 0
23 0 2 4032960 2764 232 7648 0 0 0 0 116 11 0 100 0
21 0 1 4032960 2856 232 7648 0 0 0 0 122 45 0 100 0
21 0 1 4032960 2848 232 7648 0 0 0 0 117 21 0 100 0
21 0 1 4032960 2588 232 7648 38 0 38 0 118 41 0 100 0
21 0 1 4032960 2584 232 7648 0 0 0 0 123 10 0 100 0

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/