Messages in this thread | | | Date | 19 Mar 2000 2:49:12 +0100 | From | "Rask Ingemann Lambertsen" <> | Subject | Re: 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/
| |