From owner-p4-projects@FreeBSD.ORG Wed Nov 28 00:26:43 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3D0B916A41A; Wed, 28 Nov 2007 00:26:43 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E93B716A418 for ; Wed, 28 Nov 2007 00:26:42 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DB8B113C45A for ; Wed, 28 Nov 2007 00:26:42 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lAS0Qgp7013878 for ; Wed, 28 Nov 2007 00:26:42 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lAS0QgBX013875 for perforce@freebsd.org; Wed, 28 Nov 2007 00:26:42 GMT (envelope-from jb@freebsd.org) Date: Wed, 28 Nov 2007 00:26:42 GMT Message-Id: <200711280026.lAS0QgBX013875@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 129661 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Nov 2007 00:26:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=129661 Change 129661 by jb@jb_freebsd1 on 2007/11/28 00:26:34 IFC Affected files ... .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/articles/version-guide/article.sgml#2 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/mailing-lists.ent#2 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/teams.ent#2 integrate .. //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/trademarks.ent#2 integrate .. //depot/projects/dtrace/doc/share/pgpkeys/dougb.key#3 integrate .. //depot/projects/dtrace/src/ObsoleteFiles.inc#30 integrate .. //depot/projects/dtrace/src/etc/gss/mech#4 integrate .. //depot/projects/dtrace/src/gnu/usr.bin/groff/tmac/mdoc.local#12 integrate .. //depot/projects/dtrace/src/lib/libc/gen/Symbol.map#4 integrate .. //depot/projects/dtrace/src/lib/libc/stdlib/malloc.3#7 integrate .. //depot/projects/dtrace/src/lib/libc/stdlib/malloc.c#11 integrate .. //depot/projects/dtrace/src/lib/libkse/kse.map#2 integrate .. //depot/projects/dtrace/src/lib/libkse/sys/lock.c#3 integrate .. //depot/projects/dtrace/src/lib/libkse/sys/lock.h#3 integrate .. //depot/projects/dtrace/src/lib/libkse/thread/thr_cond.c#3 integrate .. //depot/projects/dtrace/src/lib/libkse/thread/thr_init.c#3 integrate .. //depot/projects/dtrace/src/lib/libkse/thread/thr_kern.c#3 integrate .. //depot/projects/dtrace/src/lib/libkse/thread/thr_mutex.c#4 integrate .. //depot/projects/dtrace/src/lib/libkse/thread/thr_rtld.c#3 integrate .. //depot/projects/dtrace/src/lib/libthr/pthread.map#7 integrate .. //depot/projects/dtrace/src/lib/libthr/thread/thr_mutex.c#12 integrate .. //depot/projects/dtrace/src/release/doc/en_US.ISO8859-1/relnotes/article.sgml#15 integrate .. //depot/projects/dtrace/src/release/doc/share/sgml/release.ent#6 integrate .. //depot/projects/dtrace/src/sbin/mount/mount.8#9 integrate .. //depot/projects/dtrace/src/share/man/man4/nfe.4#5 integrate .. //depot/projects/dtrace/src/share/man/man9/Makefile#22 integrate .. //depot/projects/dtrace/src/share/man/man9/stack.9#1 branch .. //depot/projects/dtrace/src/sys/amd64/amd64/busdma_machdep.c#8 integrate .. //depot/projects/dtrace/src/sys/arm/arm/busdma_machdep.c#7 integrate .. //depot/projects/dtrace/src/sys/arm/include/atomic.h#8 integrate .. //depot/projects/dtrace/src/sys/dev/an/if_an.c#8 integrate .. //depot/projects/dtrace/src/sys/dev/wpi/if_wpi.c#4 integrate .. //depot/projects/dtrace/src/sys/dev/wpi/if_wpireg.h#2 integrate .. //depot/projects/dtrace/src/sys/i386/i386/busdma_machdep.c#8 integrate .. //depot/projects/dtrace/src/sys/ia64/ia64/busdma_machdep.c#7 integrate .. //depot/projects/dtrace/src/sys/ia64/include/atomic.h#5 integrate .. //depot/projects/dtrace/src/sys/powerpc/include/atomic.h#7 integrate .. //depot/projects/dtrace/src/usr.sbin/newsyslog/newsyslog.conf.5#6 integrate .. //depot/projects/dtrace/www/hu/share/sgml/header.l10n.ent#3 integrate .. //depot/projects/dtrace/www/hu/where.sgml#4 integrate Differences ... ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/articles/version-guide/article.sgml#2 (text+ko) ==== @@ -8,7 +8,7 @@ + Original Revision: r1.11 -->
Válasszuk ki a nekünk igazán megfelelõ &os; @@ -21,7 +21,7 @@ </author> </authorgroup> - <pubdate>$FreeBSD: doc/hu_HU.ISO8859-2/articles/version-guide/article.sgml,v 1.3 2007/09/04 14:38:44 gabor Exp $</pubdate> + <pubdate>$FreeBSD: doc/hu_HU.ISO8859-2/articles/version-guide/article.sgml,v 1.4 2007/11/27 23:01:47 gabor Exp $</pubdate> <legalnotice id="trademarks" role="trademarks"> &tm-attrib.freebsd; ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/mailing-lists.ent#2 (text+ko) ==== @@ -1,12 +1,12 @@ <!-- Names of FreeBSD mailing lists and related software. - $FreeBSD: doc/hu_HU.ISO8859-2/share/sgml/mailing-lists.ent,v 1.1 2007/04/15 15:23:55 gabor Exp $ + $FreeBSD: doc/hu_HU.ISO8859-2/share/sgml/mailing-lists.ent,v 1.2 2007/11/27 23:01:47 gabor Exp $ --> <!-- The FreeBSD Hungarian Documentation Project Translated by: Gabor Kovesdan <gabor@FreeBSD.org> - Original Revision: r1.56 --> + Original Revision: r1.57 --> <!ENTITY a.mailman.listinfo "http://lists.FreeBSD.org/mailman/listinfo"> <!ENTITY a.mailman.lists "<ulink url='&a.mailman.listinfo;'>FreeBSD lista szerver</ulink>"> @@ -231,6 +231,10 @@ <!ENTITY a.isp "<ulink url='&a.isp.url;'>FreeBSD Internet service provider's levelezési lista</ulink>"> <!ENTITY a.isp.name "<ulink url='&a.isp.url;'>freebsd-isp</ulink>"> +<!ENTITY a.jail.url "&a.mailman.listinfo;/freebsd-jail"> +<!ENTITY a.jail "<ulink url='&a.jail.url;'>FreeBSD jails levelezési lista</ulink>"> +<!ENTITY a.jail.name "<ulink url='&a.jail.url;'>freebsd-jail</ulink>"> + <!ENTITY a.java.url "&a.mailman.listinfo;/freebsd-java"> <!ENTITY a.java "<ulink url='&a.java.url;'>FreeBSD Java Language levelezési lista</ulink>"> <!ENTITY a.java.name "<ulink url='&a.java.url;'>freebsd-java</ulink>"> ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/teams.ent#2 (text+ko) ==== @@ -6,15 +6,17 @@ Please keep this list in alphabetical order by entity names. - $FreeBSD: doc/hu_HU.ISO8859-2/share/sgml/teams.ent,v 1.1 2007/04/15 15:23:55 gabor Exp $ + $FreeBSD: doc/hu_HU.ISO8859-2/share/sgml/teams.ent,v 1.2 2007/11/27 23:01:47 gabor Exp $ --> <!-- The FreeBSD Hungarian Documentation Project Translated by: Gabor Kovesdan <gabor@FreeBSD.org> - Original Revision: r1.17 --> + Original Revision: r1.18 --> <!ENTITY a.admins "FreeBSD Adminisztrátorok <email>admins@FreeBSD.org</email>"> +<!ENTITY a.bugmeister "PR Adatbázis Adminisztrátorok <email>bugmeister@FreeBSD.org</email>"> + <!ENTITY a.core-secretary "Core Team Titkár <email>core-secretary@FreeBSD.org</email>"> <!ENTITY a.cvsadm "CVS Repository Menedzserek <email>cvsadm@FreeBSD.org</email>"> ==== //depot/projects/dtrace/doc/hu_HU.ISO8859-2/share/sgml/trademarks.ent#2 (text+ko) ==== @@ -8,12 +8,12 @@ Please keep this file sorted. - $FreeBSD: doc/hu_HU.ISO8859-2/share/sgml/trademarks.ent,v 1.1 2007/04/15 15:23:55 gabor Exp $ + $FreeBSD: doc/hu_HU.ISO8859-2/share/sgml/trademarks.ent,v 1.2 2007/11/27 23:01:47 gabor Exp $ --> <!-- The FreeBSD Hungarian Documentation Project Translated by: Gabor Kovesdan <gabor@FreeBSD.org> - Original Revision: r1.36 --> + Original Revision: r1.43 --> <!ENTITY tm-attrib.3com "<para>A 3Com és HomeConnect a 3Com Corporation bejegyzett védjegyei.</para>"> @@ -49,6 +49,8 @@ <!ENTITY amd.duron "<trademark>AMD Duron</trademark>"> <!ENTITY amd.k6 "<trademark class='registered'>AMD-K6</trademark>"> <!ENTITY amd.opteron "<trademark>AMD Opteron</trademark>"> +<!ENTITY amd.sempron "<trademark>AMD Sempron</trademark>"> +<!ENTITY amd.turion "<trademark>AMD Turion</trademark>"> <!ENTITY athlon "<trademark>Athlon</trademark>"> <!ENTITY elan "<trademark>Élan</trademark>"> <!ENTITY opteron "<trademark>Opteron</trademark>"> @@ -61,6 +63,7 @@ <!ENTITY airport "<trademark class='registered'>AirPort</trademark>"> <!ENTITY apple "<trademark class='registered'>Apple</trademark>"> <!ENTITY firewire "<trademark class='registered'>FireWire</trademark>"> +<!ENTITY imac "<trademark class='registered'>iMac</trademark>"> <!ENTITY mac "<trademark class='registered'>Mac</trademark>"> <!ENTITY macintosh "<trademark class='registered'>Macintosh</trademark>"> <!ENTITY macos "<trademark class='registered'>Mac OS</trademark>"> @@ -97,6 +100,14 @@ Corel Corporation és/vagy leányvállalatainak bejegyzett védjegye Kanadában, az Egyesült Államokban és/vagy más országokban.</para>"> +<!ENTITY wordperfect "<trademark class='registered'>WordPerfect</trademark>"> + +<!-- http://www.coverity.com/html/press_story45_07_25_07.html --> +<!ENTITY tm-attrib.coverity "<para>A Coverity bejegyzett + védjegye, a Coverity Extend, Coverity Prevent és Coverity + Prevent SQS pedig védjegyei a Coverity, Inc.-nek.</para>"> +<!ENTITY coverity "<trademark class='registered'>Coverity</trademark>"> +<!ENTITY coverity.prevent "<trademark class='registered'>Coverity Prevent</trademark>"> <!-- http://www.creative.com/legal.asp --> <!ENTITY tm-attrib.creative "<para>A Sound Blaster a Creative Technology Ltd. @@ -149,6 +160,7 @@ védjegyei az Egyesült Államokban.</para>"> <!ENTITY posix "<trademark class='registered'>POSIX</trademark>"> +<!-- http://www.intel.com/intel/legal/tmnouns2.htm --> <!ENTITY tm-attrib.intel "<para>Az Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium és Xeon az Intel Corporation vagy leányvállalatainak védjegyei vagy bejegyzett @@ -162,6 +174,7 @@ <!ENTITY itanium "<trademark class='registered'>Itanium</trademark>"> <!ENTITY pentium "<trademark class='registered'>Pentium</trademark>"> <!ENTITY xeon "<trademark>Xeon</trademark>"> +<!ENTITY core "<trademark>Core</trademark>"> <!-- http://www.quicken.com/support/trademark/ --> <!ENTITY tm-attrib.intuit "<para>Az Intuit és Quicken az Intuit Inc., @@ -240,7 +253,7 @@ <!ENTITY tm-attrib.netscape "<para>A Netscape és a Netscape Navigator a Netscape Communications Corporation bejegyzett védjegyei az Egyesült Államokban és más - országokban.</para>"> + országokban.</para>"> <!ENTITY netscape "<trademark class='registered'>Netscape</trademark>"> <!ENTITY netscape.navigator "<trademark class='registered'>Netscape Navigator</trademark>"> @@ -289,6 +302,7 @@ <!-- http://www.realnetworks.com/company/logos/policy.html --> <!ENTITY tm-attrib.realnetworks "<para>A RealNetworks, RealPlayer és RealAudio a RealNetworks, Inc. bejegyzett védjegyei.</para>"> +<!ENTITY realplayer "<trademark class='registered'>RealPlayer</trademark>"> <!-- Note: RedHat doesn't use (r)/(tm) for their own trademarks --> <!-- http://www.redhat.com/legal/legal_statement.html --> @@ -310,6 +324,10 @@ világszerte.</para>"> <!ENTITY opengl "<trademark class='registered'>OpenGL</trademark>"> +<!-- http://slackware.com/trademark/trademark.php --> +<!ENTITY tm-attrib.slackware "<para>A Slackware Patrick Volkerding + és a Slackware Linux, Inc. bejegyzett védjegye.</para>"> + <!ENTITY tm-attrib.sparc "<para>A Sparc, Sparc64, SPARCEngine és UltraSPARC a SPARC International, Inc védjegyei az Egyesült államokban és más országokban. A SPARC ==== //depot/projects/dtrace/doc/share/pgpkeys/dougb.key#3 (text+ko) ==== @@ -1,4 +1,4 @@ -<!-- $FreeBSD: doc/share/pgpkeys/dougb.key,v 1.6 2005/11/23 01:02:59 dougb Exp $ --> +<!-- $FreeBSD: doc/share/pgpkeys/dougb.key,v 1.7 2007/11/27 03:38:06 dougb Exp $ --> <!-- sh addkey.sh dougb D5B2F0FB; --> @@ -12,7 +12,7 @@ ]]></programlisting> <programlisting role="pgpkey"><![CDATA[ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.2 (FreeBSD) +Version: GnuPG v1.4.7 (FreeBSD) Comment: Public key for DougB@{DougBarton.{us|net}|FreeBSD.org} mQGiBD4mlDMRBAC0iRjdwnYWGl2pP6W8MbxLHnZpBNAnEUaz8VfC5w3HAyFUV3jp @@ -24,130 +24,282 @@ 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 -=QG/c +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 +nQ== +=McJg -----END PGP PUBLIC KEY BLOCK----- ]]></programlisting> ==== //depot/projects/dtrace/src/ObsoleteFiles.inc#30 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.120 2007/11/21 10:49:33 ru Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.121 2007/11/27 13:58:25 brix Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -3964,9 +3964,10 @@ # - usr/share/tmac/mm/se_locale # - var/yp/Makefile -# 20071119: shared library version bump +# 20071120: shared library version bump OLD_LIBS+=usr/lib/libasn1.so.8 OLD_LIBS+=usr/lib/libgssapi.so.8 +OLD_LIBS+=usr/lib/libgssapi_krb5.so.8 OLD_LIBS+=usr/lib/libhdb.so.8 OLD_LIBS+=usr/lib/libkadm5clnt.so.8 OLD_LIBS+=usr/lib/libkadm5srv.so.8 ==== //depot/projects/dtrace/src/etc/gss/mech#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/gss/mech,v 1.1 2005/12/29 14:40:18 dfr Exp $ +# $FreeBSD: src/etc/gss/mech,v 1.2 2007/11/27 21:47:56 jhb Exp $ # # Name OID Library name Kernel module -kerberosv5 1.2.840.113554.1.2.2 /usr/lib/libgssapi_krb5.so.8 - +kerberosv5 1.2.840.113554.1.2.2 /usr/lib/libgssapi_krb5.so.9 - ==== //depot/projects/dtrace/src/gnu/usr.bin/groff/tmac/mdoc.local#12 (text+ko) ==== @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/gnu/usr.bin/groff/tmac/mdoc.local,v 1.61 2007/10/22 10:01:58 ru Exp $ +.\" $FreeBSD: src/gnu/usr.bin/groff/tmac/mdoc.local,v 1.62 2007/11/27 10:00:33 jkoshy Exp $ .\" .\" %beginstrip% . @@ -52,7 +52,7 @@ .ds doc-str-Lb-libmd Message Digest (MD4, MD5, etc.) Support Library (libmd, \-lmd) .ds doc-str-Lb-libmemstat Kernel Memory Allocator Statistics Library (libmemstat, \-lmemstat) .ds doc-str-Lb-libnetgraph Netgraph User Library (libnetgraph, \-lnetgraph) -.ds doc-str-Lb-libpmc Performance Monitoring Counters API (libpmc, \-lpmc) +.ds doc-str-Lb-libpmc Performance Monitoring Counters Interface Library (libpmc, \-lpmc) .ds doc-str-Lb-librpcsvc RPC Service Library (librpcsvc, \-lrpcsvc) .ds doc-str-Lb-libsdp Bluetooth Service Discovery Protocol User Library (libsdp, \-lsdp) .ds doc-str-Lb-libthr 1:1 Threading Library (libthr, \-lthr) ==== //depot/projects/dtrace/src/lib/libc/gen/Symbol.map#4 (text) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/lib/libc/gen/Symbol.map,v 1.6 2007/05/31 13:01:33 deischen Exp $ + * $FreeBSD: src/lib/libc/gen/Symbol.map,v 1.7 2007/11/27 16:22:21 jasone Exp $ */ FBSD_1.0 { @@ -378,6 +378,7 @@ _pthread_kill; _pthread_main_np; _pthread_mutex_destroy; + _pthread_mutex_init_calloc_cb; _pthread_mutex_init; _pthread_mutex_lock; _pthread_mutex_trylock; ==== //depot/projects/dtrace/src/lib/libc/stdlib/malloc.3#7 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)malloc.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD: src/lib/libc/stdlib/malloc.3,v 1.73 2007/06/15 22:32:33 jasone Exp $ +.\" $FreeBSD: src/lib/libc/stdlib/malloc.3,v 1.74 2007/11/27 03:18:26 jasone Exp $ .\" -.Dd June 15, 2007 +.Dd October 1, 2007 .Dt MALLOC 3 .Os .Sh NAME @@ -177,6 +177,19 @@ The process will call .Xr abort 3 in these cases. +.It B +Increase/decrease the per-arena lock contention threshold at which a thread is +randomly re-assigned to an arena. +This dynamic load balancing tends to push threads away from highly contended +arenas, which avoids worst case contention scenarios in which threads +disproportionately utilize arenas. +However, due to the highly dynamic load that applications may place on the +allocator, it is impossible for the allocator to know in advance how sensitive +it should be to contention over arenas. +Therefore, some applications may benefit from increasing or decreasing this +threshold parameter. +This option is not available for some configurations (non-PIC). +This option can be specified multiple times. .It H Use .Xr madvise 2 @@ -204,6 +217,18 @@ Increase/decrease the virtual memory chunk size by a factor of two. The default chunk size is 1 MB. This option can be specified multiple times. +.It L +Increase/decrease the per-arena number of slots for lazy deallocation. +Lazy deallocation can decrease lock contention, especially for programs that use +the producer/consumer model. +The default is 256 slots per arena (so +.Ev MALLOC_OPTIONS=lllllllll +will disable lazy deallocation), but note that due to algorithmic details, the +cache is typically flushed well before it completely fills. +This option has no impact unless there are multiple CPUs, and lazy deallocation +does not activate unless the program uses multiple threads. +This option is not available for some configurations (non-PIC). +This option can be specified multiple times. .It N Increase/decrease the number of arenas by a factor of two. The default number of arenas is four times the number of CPUs, or one if there ==== //depot/projects/dtrace/src/lib/libc/stdlib/malloc.c#11 (text+ko) ==== @@ -98,14 +98,14 @@ * defaults the A and J runtime options to off. These settings are appropriate * for production systems. */ -/* #define MALLOC_PRODUCTION */ +/* #define MALLOC_PRODUCTION */ #ifndef MALLOC_PRODUCTION # define MALLOC_DEBUG #endif #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/stdlib/malloc.c,v 1.147 2007/06/15 22:00:16 jasone Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/stdlib/malloc.c,v 1.151 2007/11/27 03:17:30 jasone Exp $"); #include "libc_private.h" #ifdef MALLOC_DEBUG @@ -171,6 +171,7 @@ # define QUANTUM_2POW_MIN 4 # define SIZEOF_PTR_2POW 2 # define USE_BRK +# define CPU_SPINWAIT __asm__ volatile("pause") #endif #ifdef __ia64__ # define QUANTUM_2POW_MIN 4 @@ -189,6 +190,7 @@ #ifdef __amd64__ # define QUANTUM_2POW_MIN 4 # define SIZEOF_PTR_2POW 3 +# define CPU_SPINWAIT __asm__ volatile("pause") #endif #ifdef __arm__ # define QUANTUM_2POW_MIN 3 @@ -202,9 +204,9 @@ # define USE_BRK #endif -#define SIZEOF_PTR (1 << SIZEOF_PTR_2POW) +#define SIZEOF_PTR (1U << SIZEOF_PTR_2POW) -/* sizeof(int) == (1 << SIZEOF_INT_2POW). */ +/* sizeof(int) == (1U << SIZEOF_INT_2POW). */ #ifndef SIZEOF_INT_2POW # define SIZEOF_INT_2POW 2 #endif @@ -226,7 +228,7 @@ * negatively affect performance. */ #define CACHELINE_2POW 6 -#define CACHELINE ((size_t)(1 << CACHELINE_2POW)) +#define CACHELINE ((size_t)(1U << CACHELINE_2POW)) /* Smallest size class to support. */ #define TINY_MIN_2POW 1 @@ -237,7 +239,7 @@ * power of 2. */ #define SMALL_MAX_2POW_DEFAULT 9 -#define SMALL_MAX_DEFAULT (1 << SMALL_MAX_2POW_DEFAULT) +#define SMALL_MAX_DEFAULT (1U << SMALL_MAX_2POW_DEFAULT) /* * Maximum desired run header overhead. Runs are sized as small as possible @@ -252,18 +254,69 @@ * RUN_MAX_OVRHD_RELAX specifies the maximum number of bits per region of * overhead for which RUN_MAX_OVRHD is relaxed. */ -#define RUN_MAX_OVRHD 0.015 -#define RUN_MAX_OVRHD_RELAX 1.5 +#define RUN_MAX_OVRHD 0.015 +#define RUN_MAX_OVRHD_RELAX 1.5 /* Put a cap on small object run size. This overrides RUN_MAX_OVRHD. */ -#define RUN_MAX_SMALL_2POW 15 -#define RUN_MAX_SMALL (1 << RUN_MAX_SMALL_2POW) +#define RUN_MAX_SMALL_2POW 15 +#define RUN_MAX_SMALL (1U << RUN_MAX_SMALL_2POW) + +/* Default size of each arena's lazy free cache. */ +#define LAZY_FREE_2POW_DEFAULT 8 +/* + * Number of pseudo-random probes to conduct before considering the cache to be + * overly full. It takes on average n probes to detect fullness of (n-1)/n. + * However, we are effectively doing multiple non-independent trials (each + * deallocation is a trial), so the actual average threshold for clearing the + * cache is somewhat lower. + */ +#define LAZY_FREE_NPROBES 5 + +/* + * Hyper-threaded CPUs may need a special instruction inside spin loops in + * order to yield to another virtual CPU. If no such instruction is defined + * above, make CPU_SPINWAIT a no-op. + */ +#ifndef CPU_SPINWAIT +# define CPU_SPINWAIT +#endif + +/* + * Adaptive spinning must eventually switch to blocking, in order to avoid the + * potential for priority inversion deadlock. Backing off past a certain point + * can actually waste time. + */ +#define SPIN_LIMIT_2POW 11 + +/* + * Conversion from spinning to blocking is expensive; we use (1U << + * BLOCK_COST_2POW) to estimate how many more times costly blocking is than + * worst-case spinning. + */ +#define BLOCK_COST_2POW 4 + +/* + * We use an exponential moving average to track recent lock contention, where + * the size of the history window is N, and alpha=2/(N+1). + * + * Due to integer math rounding, very small values here can cause substantial + * degradation in accuracy, thus making the moving average decay faster than it + * would with precise calculation. + */ +#define BALANCE_ALPHA_INV_2POW 9 + +/* + * Threshold value for the exponential moving contention average at which to + * re-assign a thread. + */ +#define BALANCE_THRESHOLD_DEFAULT (1U << (SPIN_LIMIT_2POW-4)) /******************************************************************************/ /* - * Mutexes based on spinlocks. We can't use normal pthread mutexes, because - * they require malloc()ed memory. + * Mutexes based on spinlocks. We can't use normal pthread spinlocks in all + * places, because they require malloc()ed memory, which causes bootstrapping + * issues in some cases. */ typedef struct { spinlock_t lock; @@ -319,6 +372,11 @@ size_t allocated_large; uint64_t nmalloc_large; uint64_t ndalloc_large; + +#ifndef NO_TLS + /* Number of times this arena reassigned a thread due to contention. */ + uint64_t nbalance; +#endif }; typedef struct chunk_stats_s chunk_stats_t; @@ -374,17 +432,27 @@ typedef struct arena_chunk_map_s arena_chunk_map_t; struct arena_chunk_map_s { - /* Number of pages in run. */ + /* + * Number of pages in run. For a free run that has never been touched, + * this is NPAGES_EMPTY for the central pages, which allows us to avoid + * zero-filling untouched pages for calloc(). + */ +#define NPAGES_EMPTY ((uint32_t)0x0U) uint32_t npages; /* - * Position within run. For a free run, this is POS_FREE for the first - * and last pages. The POS_FREE special value makes it possible to - * quickly coalesce free runs. + * Position within run. For a free run, this is POS_EMPTY/POS_FREE for + * the first and last pages. The special values make it possible to + * quickly coalesce free runs. POS_EMPTY indicates that the run has + * never been touched, which allows us to avoid zero-filling untouched + * pages for calloc(). * * This is the limiting factor for chunksize; there can be at most 2^31 * pages in a run. + * + * POS_EMPTY is assumed by arena_run_dalloc() to be less than POS_FREE. */ -#define POS_FREE ((uint32_t)0xffffffffU) +#define POS_EMPTY ((uint32_t)0xfffffffeU) +#define POS_FREE ((uint32_t)0xffffffffU) uint32_t pos; }; @@ -496,8 +564,8 @@ # define ARENA_MAGIC 0x947d3d24 #endif - /* All operations on this arena require that mtx be locked. */ - malloc_mutex_t mtx; + /* All operations on this arena require that lock be locked. */ + pthread_mutex_t lock; #ifdef MALLOC_STATS arena_stats_t stats; @@ -517,7 +585,23 @@ * order to avoid interactions between multiple threads that could make * a single spare inadequate. */ - arena_chunk_t *spare; + arena_chunk_t *spare; + +#ifndef NO_TLS + /* + * The arena load balancing machinery needs to keep track of how much + * lock contention there is. This value is exponentially averaged. + */ + uint32_t contention; + + /* + * Deallocation of small objects can be lazy, in which case free_cache + * stores pointers to those objects that have not yet been deallocated. + * In order to avoid lock contention, slots are chosen randomly. Empty + * slots contain NULL. + */ + void **free_cache; +#endif /* * bins is used to store rings of free regions of the following sizes, @@ -650,9 +734,9 @@ static arena_t **arenas; static unsigned narenas; #ifndef NO_TLS -static unsigned next_arena; +static unsigned narenas_2pow; #endif -static malloc_mutex_t arenas_mtx; /* Protects arenas initialization. */ +static pthread_mutex_t arenas_lock; /* Protects arenas initialization. */ #ifndef NO_TLS >>> TRUNCATED FOR MAIL (1000 lines) <<<