Hi there,
Does anybody have an idea to where I can take this question?
BR,
Martin Egholm
I have a some problems figuring out the OOM-killer and configuring the
overcommit_memory parameter. Hope someone here can guide me in the right
directions...
Specs:
I'm having an embedded Linux system running on a PPC405EP with 64 megs
of RAM, some flash, but _no_ swap space. It runs a 2.4.20 kernel patched
with drivers for my device.
Problem:
I have an application that is killed by the OOM (I guess) when it tries
to "use" more memory than present on the system.
Bolied down, memory is allocated with "sbrk" and then touch'ed.
With "/proc/sys/vm/overcommit_memory" set to 2, I expected that "sbrk"
would return "-1" (0xFFFFFFFF), but it doesn't, hence is
terminated/killed by the kernel.
The same happens on another embedded Linux/2.4.17/i386, also without swap.
However, both my desktop Linux/2.4.18/i386 and Linux/2.6.5/i386 _with_
swap does what I hoped:
# ./exhaust_mem
...
ffffffff
Out of memory
# #Yeaaaah!
Having searched the web, I see that this may be related with the fact
that there is no swap enabled on either of my embedded devices.
Is this correct?
Can I do anything in order to get it the way I expected?
Best regards,
Martin Egholm
=== exhaust_mem.c ===
#include <unistd.h>
#include <stdio.h>
#define SIZE 1000000
int main( int i )
{
while ( 1 ) {
char *v = sbrk( SIZE );
char *p;
printf( "%x\n\n", v );
if ((long)v < 0) {
fprintf(stderr, "Out of memory\n");
exit(1);
} // if
for (p = v; p < v + SIZE; ++p) {
*p = 42;
} // for
} // while
} // main
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/