Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Nov 2007 00:26:42 GMT
From:      John Birrell <jb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 129661 for review
Message-ID:  <200711280026.lAS0QgBX013875@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 @@
 
 <!-- The FreeBSD Hungarian Documentation Project
      Translated by: PALI, Gabor <pali.gabor@gmail.com>
-     Original Revision: r1.10				-->
+     Original Revision: r1.11				-->
 
 <article lang="hu">
   <title>V&aacute;lasszuk ki a nek&uuml;nk igaz&aacute;n megfelel&#245; &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&eacute;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&eacute;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&eacute;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&aacute;torok <email>admins@FreeBSD.org</email>">
 
+<!ENTITY a.bugmeister "PR Adatb&aacute;zis Adminisztr&aacute;torok <email>bugmeister@FreeBSD.org</email>">
+
 <!ENTITY a.core-secretary "Core Team Titk&aacute;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 &eacute;s HomeConnect a 3Com Corporation
   bejegyzett v&eacute;djegyei.</para>">
@@ -49,6 +49,8 @@
 <!ENTITY amd.duron "<trademark>AMD&nbsp;Duron</trademark>">
 <!ENTITY amd.k6 "<trademark class='registered'>AMD-K6</trademark>">
 <!ENTITY amd.opteron "<trademark>AMD&nbsp;Opteron</trademark>">
+<!ENTITY amd.sempron "<trademark>AMD&nbsp;Sempron</trademark>">
+<!ENTITY amd.turion "<trademark>AMD&nbsp;Turion</trademark>">
 <!ENTITY athlon "<trademark>Athlon</trademark>">
 <!ENTITY elan "<trademark>&Eacute;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&nbsp;OS</trademark>">
@@ -97,6 +100,14 @@
   Corel Corporation &eacute;s/vagy le&aacute;nyv&aacute;llalatainak
   bejegyzett v&eacute;djegye Kanad&aacute;ban, az Egyes&uuml;lt
   &Aacute;llamokban &eacute;s/vagy m&aacute;s orsz&aacute;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&eacute;djegye, a Coverity Extend, Coverity Prevent &eacute;s Coverity
+  Prevent SQS pedig v&eacute;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&eacute;djegyei az Egyes&uuml;lt &Aacute;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 &eacute;s Xeon az Intel Corporation vagy
   le&aacute;nyv&aacute;llalatainak v&eacute;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 &eacute;s Quicken az Intuit Inc.,
@@ -240,7 +253,7 @@
 <!ENTITY tm-attrib.netscape "<para>A Netscape &eacute;s a Netscape Navigator
   a Netscape Communications Corporation bejegyzett v&eacute;djegyei az
   Egyes&uuml;lt &Aacute;llamokban &eacute;s m&aacute;s
-  orsz&aacutegokban.</para>">
+  orsz&aacute;gokban.</para>">
 <!ENTITY netscape "<trademark class='registered'>Netscape</trademark>">
 <!ENTITY netscape.navigator "<trademark class='registered'>Netscape&nbsp;Navigator</trademark>">
 
@@ -289,6 +302,7 @@
 <!-- http://www.realnetworks.com/company/logos/policy.html -->
 <!ENTITY tm-attrib.realnetworks "<para>A RealNetworks, RealPlayer &eacute;s
   RealAudio a RealNetworks, Inc. bejegyzett v&eacute;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&aacute;gszerte.</para>">
 <!ENTITY opengl "<trademark class='registered'>OpenGL</trademark>">
 
+<!-- http://slackware.com/trademark/trademark.php -->
+<!ENTITY tm-attrib.slackware "<para>A Slackware Patrick Volkerding
+  &eacute;s a Slackware Linux, Inc. bejegyzett v&eacute;djegye.</para>">
+
 <!ENTITY tm-attrib.sparc "<para>A Sparc, Sparc64, SPARCEngine &eacute;s
   UltraSPARC a SPARC International, Inc v&eacute;djegyei az Egyes&uuml;lt
   &aacute;llamokban &eacute;s m&aacute;s orsz&aacute;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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
-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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) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200711280026.lAS0QgBX013875>