Re: sbrk(2) broken

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Igor Mozolevsky <igor@...>
Cc: Dag-Erling Smørgrav <des@...>, <freebsd-current@...>, Jason Evans <jasone@...>
Date: Friday, January 4, 2008 - 7:19 am

On Fri, 4 Jan 2008, Igor Mozolevsky wrote:


FreeBSD allows memory overcommit, both overcommit of physical memory resulting 
in paging, and overcommit of swap space.  For the last few years, resource 
limits on the data segment size, previously observed by malloc(), have 
prevented processes from mallocing enough memory individually to exhaust swap 
on 32-bit systems.  This is arguably a bug, because you actually want a single 
process to be able to allocate enough memory to fill its address space, but 
because the data segment size is used to make address space layout decisions 
from the inception of the process, is rather inate to using sbrk().  Jason's 
new malloc uses mmap() of anonymous memory, which isn't affected by the data 
segment limit, and hence, as a feature, isn't limited by the resouce limit. 
This turns out to be awkward if you have a run-away process, as where 
previously it would simply get back an error when it tried to exceed its 
resource limit, now it simply consumes all your swap, which then results in 
overcommit.

My hope was that we could re-introduce a resource limit on malloc'd memory 
without large changes, but that appears to have been more tricky than hoped. 
The goal is not to prevent overcommit, which is invaluable in UNIX systems due 
to the fork() model which pretty much pre-supposes it by design, rather, to 
prevent exhaustion of swap by a single process if not specifically allowed by 
the administrator (in the same way we limit all sorts of other things, like 
open files, mbufs, socket buffer memory, etc).  The right way to do it is to 
provide a specifically configurable process limit on swap use, the same way we 
did for data segment size, only not data segment size, but that was considered 
likely too risky for 7.0.

Robert N M Watson
Computer Laboratory
University of Cambridge
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
sbrk(2) broken, Jason Evans, (Thu Jan 3, 2:38 am)
Re: sbrk(2) broken, Andrey Chernov, (Fri Jan 4, 8:21 am)
Re: sbrk(2) broken , Poul-Henning Kamp, (Fri Jan 4, 8:57 am)
Re: sbrk(2) broken, Andrey Chernov, (Fri Jan 4, 9:12 am)
Re: sbrk(2) broken, David Taylor, (Fri Jan 4, 9:25 am)
Re: sbrk(2) broken, Andrey Chernov, (Fri Jan 4, 10:22 am)
Re: sbrk(2) broken , Poul-Henning Kamp, (Fri Jan 4, 9:28 am)
Re: sbrk(2) broken, Kostik Belousov, (Thu Jan 3, 4:39 pm)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Thu Jan 3, 3:21 pm)
Re: sbrk(2) broken, Robert Watson, (Thu Jan 3, 8:26 pm)
Re: sbrk(2) broken, Igor Mozolevsky, (Fri Jan 4, 6:41 am)
Re: sbrk(2) broken, Robert Watson, (Fri Jan 4, 7:19 am)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Fri Jan 4, 6:55 am)
Re: sbrk(2) broken, Igor Mozolevsky, (Fri Jan 4, 7:18 am)
Re: sbrk(2) broken, Giorgos Keramidas, (Fri Jan 4, 11:26 pm)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Fri Jan 4, 8:45 am)
Re: sbrk(2) broken , Poul-Henning Kamp, (Fri Jan 4, 8:53 am)
Re: sbrk(2) broken, Igor Mozolevsky, (Fri Jan 4, 9:03 am)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Fri Jan 4, 9:12 am)
Re: sbrk(2) broken, Kostik Belousov, (Fri Jan 4, 9:48 am)
Re: sbrk(2) broken , Poul-Henning Kamp, (Mon Jan 7, 5:08 am)
Re: sbrk(2) broken, Peter Jeremy, (Mon Jan 7, 5:58 am)
Re: sbrk(2) broken , Poul-Henning Kamp, (Mon Jan 7, 6:05 am)
Re: sbrk(2) broken, Igor Mozolevsky, (Mon Jan 7, 9:15 am)
Re: sbrk(2) broken , Poul-Henning Kamp, (Mon Jan 7, 9:18 am)
Re: sbrk(2) broken, Andrew Reilly, (Mon Jan 7, 7:19 pm)
Re: sbrk(2) broken, Igor Mozolevsky, (Mon Jan 7, 8:06 pm)
Re: sbrk(2) broken , Poul-Henning Kamp, (Mon Jan 7, 8:17 pm)
Re: sbrk(2) broken, Peter Schuller, (Mon Jan 7, 9:37 pm)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Tue Jan 8, 2:36 pm)
Re: sbrk(2) broken, Peter Schuller, (Wed Jan 9, 2:22 pm)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Thu Jan 10, 6:04 am)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Thu Jan 10, 10:31 am)
Re: sbrk(2) broken, Igor Mozolevsky, (Mon Jan 7, 8:57 pm)
Re: sbrk(2) broken , Poul-Henning Kamp, (Tue Jan 8, 4:31 am)
Re: sbrk(2) broken, Alexander Kabaev, (Mon Jan 7, 10:34 pm)
Re: sbrk(2) broken, Andrew Reilly, (Mon Jan 7, 8:28 pm)
Re: sbrk(2) broken, Robert Watson, (Fri Jan 4, 9:24 am)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Sat Jan 5, 9:50 am)
Re: sbrk(2) broken, Kris Kennaway, (Fri Jan 4, 7:31 am)
Re: sbrk(2) broken, Robert Watson, (Fri Jan 4, 7:22 am)
Re: sbrk(2) broken, Igor Mozolevsky, (Fri Jan 4, 7:30 am)
Re: sbrk(2) broken, Robert Watson, (Fri Jan 4, 7:38 am)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Fri Jan 4, 8:48 am)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Fri Jan 4, 5:32 am)
Re: sbrk(2) broken, Robert Watson, (Fri Jan 4, 7:06 am)
Re: sbrk(2) broken, Skip Ford, (Fri Jan 4, 9:54 am)
Re: sbrk(2) broken, Kostik Belousov, (Fri Jan 4, 9:59 am)
Re: sbrk(2) broken, Skip Ford, (Fri Jan 4, 10:11 am)
Re: sbrk(2) broken, Kostik Belousov, (Fri Jan 4, 10:18 am)
Re: sbrk(2) broken, Skip Ford, (Fri Jan 4, 10:58 am)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Sat Jan 5, 10:01 am)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Fri Jan 4, 8:34 am)
Re: sbrk(2) broken, Robert Watson, (Fri Jan 4, 9:26 am)
Re: sbrk(2) broken , Ian FREISLICH, (Fri Jan 4, 2:27 am)
Re: sbrk(2) broken, Peter Jeremy, (Fri Jan 4, 5:51 am)
Re: sbrk(2) broken, Kostik Belousov, (Fri Jan 4, 8:47 am)
Re: sbrk(2) broken, Scott Long, (Thu Jan 3, 6:23 pm)
Re: sbrk(2) broken, John Baldwin, (Thu Jan 3, 6:46 pm)
Re: sbrk(2) broken, Scott Long, (Thu Jan 3, 7:08 pm)
Re: sbrk(2) broken, Robert Watson, (Thu Jan 3, 8:31 pm)
Re: sbrk(2) broken, Peter Schuller, (Thu Jan 3, 5:00 pm)
Re: sbrk(2) broken, Jason Fesler, (Thu Jan 3, 5:08 pm)
Re: sbrk(2) broken, Dag-Erling Smørgrav, (Fri Jan 4, 5:07 am)
Re: sbrk(2) broken, Tim Kientzle, (Fri Jan 4, 1:55 pm)
ELF dynamic loader name [was: sbrk(2) broken], Maxim Sobolev, (Fri Jan 4, 5:25 pm)
Re: ELF dynamic loader name [was: sbrk(2) broken], Peter Wemm, (Fri Jan 4, 5:42 pm)
Re: ELF dynamic loader name [was: sbrk(2) broken], Tim Kientzle, (Fri Jan 4, 11:51 pm)
Re: ELF dynamic loader name, Dag-Erling Smørgrav, (Sat Jan 5, 10:16 am)
Re: ELF dynamic loader name, Tim Kientzle, (Sun Jan 13, 3:33 pm)
Re: ELF dynamic loader name, John Baldwin, (Mon Jan 14, 9:51 am)
Re: ELF dynamic loader name, Dag-Erling Smørgrav, (Sun Jan 13, 3:48 pm)
Re: ELF dynamic loader name, John Baldwin, (Mon Jan 14, 9:46 am)
Re: ELF dynamic loader name, Alexander Leidinger, (Mon Jan 14, 7:03 am)
Re: ELF dynamic loader name [was: sbrk(2) broken] , Danny Braniss, (Sat Jan 5, 3:32 am)
Re: ELF dynamic loader name [was: sbrk(2) broken], Peter Wemm, (Sat Jan 5, 6:24 pm)
Re: ELF dynamic loader name [was: sbrk(2) broken] , Danny Braniss, (Sun Jan 6, 3:56 am)
Re: ELF dynamic loader name [was: sbrk(2) broken], Andrew Reilly, (Sun Jan 6, 4:42 pm)
Re: ELF dynamic loader name, Dag-Erling Smørgrav, (Mon Jan 7, 5:42 am)
Re: ELF dynamic loader name, Andrew Reilly, (Mon Jan 7, 7:30 pm)
Re: ELF dynamic loader name, Dag-Erling Smørgrav, (Tue Jan 8, 5:27 am)
Re: ELF dynamic loader name [was: sbrk(2) broken], Maxim Sobolev, (Fri Jan 4, 7:42 pm)
Re: ELF dynamic loader name [was: sbrk(2) broken], Maxim Sobolev, (Fri Jan 4, 7:38 pm)
Re: ELF dynamic loader name, Dag-Erling Smørgrav, (Sat Jan 5, 10:03 am)
Re: ELF dynamic loader name, Ollivier Robert, (Sat Jan 5, 4:56 pm)