Re: Commenting out out_of_memory() function in __alloc_pages()

Chase Venters
2006-07-07T21:21:54Z

On Fri, 7 Jul 2006, Abu M. Muttalib wrote:

> Hi,
>
> I am getting the Out of memory.
>
> To circumvent the problem, I have commented the call to "out_of_memory(),
> and replaced "goto restart" with "goto nopage".
>
> At "nopage:" lable I have added a call to "schedule()" and then "return
> NULL" after "schedule()".

I wouldn't recommend gutting the oom killer...

> I tried the modified kernel with a test application, the test application is
> mallocing memory in a loop. Unlike as expected the process gets killed. On
> second run of the same application I am getting the page allocation failure
> as expected but subsequently the system hangs.
>
> I am attaching the test application and the log herewith.
>
> I am getting this exception with kernel 2.6.13. With kernel
> 2.4.19-rmka7-pxa1 there was no problem.
>
> Why its so? What can I do to alleviate the OOM problem?

First you should know what is causing them. Is an application leaking
memory, or is the kernel leaking memory? "ps" can help you answer the
first question, while "watch cat /proc/meminfo" can help you answer the
second.

If kernel memory usage seems to be rising steadily over time, report it as
a bug. Otherwise, fix the broken application.

The reason for the "OOM killer" is because Linux does "VM overcommit".
Please read "Documentation/vm/overcommit-accounting" for more information,
including what you'll need if you want to disable "VM overcommit" to
hopefully stop the OOM killer from coming around.

(When using VM overcommit, the OOM killer is very necessary for a healthy
system... sometimes the kernel _needs_ memory, and you can't tell it NO.
In those cases, the OOM killer is invoked to find something to
sacrifice...)

> Thanks in anticipation and regards,
> Abu.
>

Thanks,
Chase