lkml.org 
[lkml]   [2000]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Overcommitable memory??
Den 17-Mar-00 09:24:31 skrev James Sutherland følgende om "Re: Overcommitable memory??":

> malloc() CAN be overcommitted. If you set a VM flag via /proc, then
> malloc() will *ALWAYS* succeed, even if there isn't any memory available
> at all. With the flag clear, malloc() does some sanity checking before
> granting the memory.

> You CAN obtain an overcommit free malloc() by clearing the VM flag (it is
> clear by default), then touching every page you allocate when you allocate
> it.

That's all theory. Reality is that Linux always overcommits memory
regardless of what you set /proc/sys/vm/overcommit_memory to. Proof:

telnet://rask@carlsberg/home/rask> cat memeater.c
#include <stdlib.h>

int main (int argc, char *argv[])
{
void *mem;

if ((mem = malloc (64 * 1024 * 1024)))
{
sleep (600);
free (mem);
}

return (EXIT_SUCCESS);
}
telnet://rask@carlsberg/home/rask> gcc memeater.c -o memeater
telnet://rask@carlsberg/home/rask> free
total used free shared buffers cached
Mem: 128216 122196 6020 28976 39312 49376
-/+ buffers/cache: 33508 94708
Swap: 130748 22500 108248
telnet://rask@carlsberg/home/rask> date
Sun Mar 19 02:30:53 CET 2000
telnet://rask@carlsberg/home/rask> ./memeater &
[1] 17227
telnet://rask@carlsberg/home/rask> ./memeater &
[2] 17228
telnet://rask@carlsberg/home/rask> ./memeater &
[3] 17229
telnet://rask@carlsberg/home/rask> ./memeater &
[4] 17230
telnet://rask@carlsberg/home/rask> ./memeater &
[5] 17232
telnet://rask@carlsberg/home/rask> ./memeater &
[6] 17233
telnet://rask@carlsberg/home/rask> ./memeater &
[7] 17234
telnet://rask@carlsberg/home/rask> ./memeater &
[8] 17235
telnet://rask@carlsberg/home/rask> ./memeater &
[9] 17236
telnet://rask@carlsberg/home/rask> ./memeater &
[10] 17237
telnet://rask@carlsberg/home/rask> ./memeater &
[11] 17238
telnet://rask@carlsberg/home/rask> ./memeater &
[12] 17240
telnet://rask@carlsberg/home/rask> ./memeater &
[13] 17241
telnet://rask@carlsberg/home/rask> ./memeater &
[14] 17242
telnet://rask@carlsberg/home/rask> date
Sun Mar 19 02:31:12 CET 2000
telnet://rask@carlsberg/home/rask> free
total used free shared buffers cached
Mem: 128216 123372 4844 32372 39312 49408
-/+ buffers/cache: 34652 93564
Swap: 130748 22500 108248
telnet://rask@carlsberg/home/rask> cat /proc/sys/vm/overcommit_memory
0
telnet://rask@carlsberg/home/rask> ps lw
FLAGS UID PID PPID PRI NI SIZE RSS WCHAN STA TTY TIME COMMAND
100 1146 4693 4686 0 0 2152 908 rt_sigsuspe S p3 0:00 -tcsh
0 1146 17227 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17228 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17229 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17230 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17232 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17233 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17234 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17235 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17236 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17237 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17238 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17240 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17241 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17242 4693 0 0 66604 304 nanosleep S p3 0:00 ./memeater
0 1146 17267 4693 1 0 1384 584 R p3 0:00 ps lw

I started 14 processes which each successfully allocated 64 MB. That's
14 * 64 MB = 896. The box just doesn't have that kind of RAM+swap. The
overcommit flag is off, but the allocations still succeeded, even though
they shouldn't have. If my memeater program had actually touched all that
memory, I would probably have been on my way down into the basement now to
reach for the reset button to bring the system back up again. Uptime says
11 days, so it would have fallen into the normal 10-15 day OOM crash
interval. If only overcommitment could be disabled...

Regards,

/¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯T¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\
| Rask Ingemann Lambertsen | E-mail: mailto:rask@kampsax.dtu.dk |
| Please do NOT Cc: to me or the | WWW: http://www.gbar.dtu.dk/~c948374/ |
| mailing list. I am on the list.| "ThrustMe" on XPilot, ARCnet and IRC |
| It is my tag line - I stole it first! |


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

\
 
 \ /
  Last update: 2005-03-22 13:57    [W:0.228 / U:0.624 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site