freebsd-dev/lib/libc/stdlib
Alan Cox b8947edcb6 Make malloc(3) superpage aware. Specifically, if getpagesizes(3) returns
a large page size that is greater than malloc(3)'s default chunk size but
less than or equal to 4 MB, then increase the chunk size to match the large
page size.

Most often, using a chunk size that is less than the large page size is not
a problem.  However, consider a long-running application that allocates and
frees significant amounts of memory.  In particular, it frees enough memory
at times that some of that memory is munmap()ed.  Up until the first
munmap(), a 1MB chunk size is just fine; it's not a problem for the virtual
memory system.  Two adjacent 1MB chunks that are aligned on a 2MB boundary
will be promoted automatically to a superpage even though they were
allocated at different times.  The trouble begins with the munmap(),
releasing a 1MB chunk will trigger the demotion of the containing superpage,
leaving behind a half-used 2MB reservation.  Now comes the real problem.
Unfortunately, when the application needs to allocate more memory, and it
recycles the previously munmap()ed address range, the implementation of
mmap() won't be able to reuse the reservation.  Basically, the coalescing
rules in the virtual memory system don't allow this new range to combine
with its neighbor.  The effect being that superpage promotion will not
reoccur for this range of addresses until both 1MB chunks are freed at some
point in the future.

Reviewed by:	jasone
MFC after:	3 weeks
2009-09-26 18:20:40 +00:00
..
_Exit.c
a64l.3 Revise markup in recently added manpages. 2006-09-30 10:34:13 +00:00
a64l.c Correct decoding a string containing '/'. 2006-05-19 19:06:38 +00:00
abort.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
abort.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
abs.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
abs.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
alloca.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
atexit.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
atexit.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
atexit.h Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
atof.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
atof.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
atoi.3 Remove out of date notes, the atoi code is thread-safe and async-cancel 2007-10-19 06:23:39 +00:00
atoi.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
atol.3 "-isoC-99" should be spelled without 'c'. 2009-03-01 05:44:28 +00:00
atol.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
atoll.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
bsearch.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
bsearch.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
div.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
div.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
exit.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
exit.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getenv.3 Significantly reduce the memory leak as noted in BUGS section for 2007-07-04 00:00:41 +00:00
getenv.c Restructure and use different variables in the tests that involve 2008-08-03 22:47:23 +00:00
getopt_long.3 Sort sections. 2005-01-20 09:17:07 +00:00
getopt_long.c Keep compatible parts in sync with OpenBSD v1.21, add some comments. 2006-09-23 14:48:31 +00:00
getopt.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getopt.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getsubopt.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
getsubopt.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
hcreate.3 - This code was intially obtained from NetBSD, but it's missing licence 2008-07-06 17:03:37 +00:00
hcreate.c - remove superfluous word 2008-07-06 11:31:20 +00:00
heapsort.c Use size_t to avoid overflow when sorting arrays larger than 2 GB. 2008-01-13 02:11:10 +00:00
imaxabs.3
imaxabs.c
imaxdiv.3
imaxdiv.c
insque.3
insque.c
l64a.c Add a64l(), l64a(), and l64a_r() XSI extentions. These functions convert 2005-12-24 22:37:59 +00:00
labs.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
labs.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
ldiv.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
ldiv.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
llabs.3
llabs.c
lldiv.3
lldiv.c
lsearch.3 Sort sections. 2005-01-20 09:17:07 +00:00
lsearch.c
Makefile.inc Simplify. We can just use .sinclude here. 2009-06-23 14:10:46 +00:00
malloc.3 Make malloc(3) superpage aware. Specifically, if getpagesizes(3) returns 2009-09-26 18:20:40 +00:00
malloc.c Make malloc(3) superpage aware. Specifically, if getpagesizes(3) returns 2009-09-26 18:20:40 +00:00
memory.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
merge.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
posix_memalign.3 Add a HISTORY section. 2007-03-28 04:32:51 +00:00
ptsname.3 Our implementation of granpt(3) could be valid in the future. 2009-08-24 11:16:44 +00:00
ptsname.c Add two new routines: fdevname() and fdevname_r(). 2009-02-11 20:24:59 +00:00
qsort_r.c
qsort.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
qsort.c Changing 'r' to a size_t in the previous commit turned quicksort 2008-01-14 09:21:34 +00:00
radixsort.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
radixsort.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
rand.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
rand.c Fix typo in the comment 2007-12-11 20:39:32 +00:00
random.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
random.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
rb.h Clean up cpp logic and comments. 2008-05-14 18:33:13 +00:00
reallocf.c
realpath.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
realpath.c
remque.c
strfmon.3
strfmon.c Stricter check for integer overflow. 2008-04-24 07:49:00 +00:00
strtod.3 Implement and document nan(), nanf(), and nanl(). This commit 2007-12-16 21:19:28 +00:00
strtoimax.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
strtol.3 Swap "underflow"/"overflow" in the table header. 2007-04-10 11:17:00 +00:00
strtol.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
strtoll.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
strtonum.3 Revise markup in recently added manpages. 2006-09-30 10:34:13 +00:00
strtonum.c POSIXed strtoll() (and ours one too) can set errno to EINVAL, so check 2006-03-14 19:53:03 +00:00
strtoq.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
strtoul.3 Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
strtoul.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
strtoull.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
strtoumax.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
strtouq.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
Symbol.map Add thread-specific caching for small size classes, based on magazines. 2008-08-27 02:00:53 +00:00
system.3 Mark the section describing return values with an appropriate section flag. 2008-06-26 08:24:59 +00:00
system.c Per Regents of the University of Calfornia letter, remove advertising 2007-01-09 00:28:16 +00:00
tdelete.c
tfind.c
tsearch.3 twalk() expects an `action' function not a comparison function. 2006-06-23 13:36:33 +00:00
tsearch.c
twalk.c