svn commit: r198815 - stable/8/lib/libc/stdlib
Alan Cox
alc at FreeBSD.org
Mon Nov 2 18:44:02 UTC 2009
Author: alc
Date: Mon Nov 2 18:44:01 2009
New Revision: 198815
URL: http://svn.freebsd.org/changeset/base/198815
Log:
MFC r197524
Make malloc(3) superpage aware.
Modified:
stable/8/lib/libc/stdlib/ (props changed)
stable/8/lib/libc/stdlib/malloc.3
stable/8/lib/libc/stdlib/malloc.c
Modified: stable/8/lib/libc/stdlib/malloc.3
==============================================================================
--- stable/8/lib/libc/stdlib/malloc.3 Mon Nov 2 18:35:05 2009 (r198814)
+++ stable/8/lib/libc/stdlib/malloc.3 Mon Nov 2 18:44:01 2009 (r198815)
@@ -32,7 +32,7 @@
.\" @(#)malloc.3 8.1 (Berkeley) 6/4/93
.\" $FreeBSD$
.\"
-.Dd August 26, 2008
+.Dd September 26, 2009
.Dt MALLOC 3
.Os
.Sh NAME
@@ -245,7 +245,8 @@ will be initialized to 0x5a.
This is intended for debugging and will impact performance negatively.
.It K
Double/halve the virtual memory chunk size.
-The default chunk size is 1 MB.
+The default chunk size is the maximum of 1 MB and the largest
+page size that is less than or equal to 4 MB.
.It M
Use
.Xr mmap 2
@@ -561,6 +562,7 @@ _malloc_options = "X";
.Xr alloca 3 ,
.Xr atexit 3 ,
.Xr getpagesize 3 ,
+.Xr getpagesizes 3 ,
.Xr memory 3 ,
.Xr posix_memalign 3
.Sh STANDARDS
Modified: stable/8/lib/libc/stdlib/malloc.c
==============================================================================
--- stable/8/lib/libc/stdlib/malloc.c Mon Nov 2 18:35:05 2009 (r198814)
+++ stable/8/lib/libc/stdlib/malloc.c Mon Nov 2 18:44:01 2009 (r198815)
@@ -4795,6 +4795,21 @@ malloc_init_hard(void)
}
}
+ /*
+ * Increase the chunk size to the largest page size that is greater
+ * than the default chunk size and less than or equal to 4MB.
+ */
+ {
+ size_t pagesizes[MAXPAGESIZES];
+ int k, nsizes;
+
+ nsizes = getpagesizes(pagesizes, MAXPAGESIZES);
+ for (k = 0; k < nsizes; k++)
+ if (pagesizes[k] <= (1LU << 22))
+ while ((1LU << opt_chunk_2pow) < pagesizes[k])
+ opt_chunk_2pow++;
+ }
+
for (i = 0; i < 3; i++) {
unsigned j;
More information about the svn-src-stable
mailing list