diff --git a/jemalloc/ChangeLog b/jemalloc/ChangeLog new file mode 100644 index 00000000..290dea15 --- /dev/null +++ b/jemalloc/ChangeLog @@ -0,0 +1,130 @@ +Following are change highlights associated with official releases. Important +bug fixes are all mentioned, but internal enhancements are omitted here for +brevity (even though they are more fun to write about). Much more detail can be +found in the git revision history: + + http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git + git://canonware.com/jemalloc.git + +* 2.0.0 + + This version focuses on the experimental *allocm() API, and on improved + run-time configuration/introspection. Nonetheless, numerous performance + improvements are also included. + + New features: + - Implement the experimental {,r,s,d}allocm() API, which provides a superset + of the functionality available via malloc(), calloc(), posix_memalign(), + realloc(), malloc_usable_size(), and free(). These functions can be used + to allocate/reallocate aligned zeroed memory, ask for optional extra + memory during reallocation, prevent object movement during reallocation, + etc. + - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is + more human-readable, and more flexible. For example: + JEMALLOC_OPTIONS=AJP + is now: + MALLOC_CONF=abort:true,fill:true,stats_print:true + - Port to Apple OS X. Sponsored by Mozilla. + - Make it possible for the application to control thread-->arena mappings + via the "thread.arena" mallctl. + - Add compile-time support for all TLS-related functionality via pthreads + TSD. This is mainly of interest for OS X, which does not support TLS, but + has a TSD implementation with similar performance. + - Override memalign() and valloc() if they are provided by the system. + - Add the "arenas.purge" mallctl, which can be used to synchronously purge + all dirty unused pages. + - Make cumulative heap profiling data optional, so that it is possible to + limit the amount of memory consumed by heap profiling data structures. + - Add per thread allocation counters that can be accessed via the + "thread.allocated" and "thread.deallocated" mallctls. + + Incompatible changes: + - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above). + - Increase default backtrace depth from 4 to 128 for heap profiling. + - Disable interval-based profile dumps by default. + + Bug fixes: + - Remove bad assertions in fork handler functions. These assertions could + cause aborts for some combinations of configure settings. + - Fix strerror_r() usage to deal with non-standard semantics in GNU libc. + - Fix leak context reporting. This bug tended to cause the number of contexts + to be underreported (though the reported number of objects and bytes were + correct). + - Fix a realloc() bug for large in-place growing reallocation. This bug could + cause memory corruption, but it was hard to trigger. + - Fix an allocation bug for small allocations that could be triggered if + multiple threads raced to create a new run of backing pages. + - Enhance the heap profiler to trigger samples based on usable size, rather + than request size. + - Fix a heap profiling bug due to sometimes losing track of requested object + size for sampled objects. + +* 1.0.3 + + Bug fixes: + - Fix the libunwind-based implementation of stack backtracing (used for heap + profiling). This bug could cause zero-length backtraces to be reported. + - Add a missing mutex unlock in library initialization code. If multiple + threads raced to initialize malloc, some of them could end up permanently + blocked. + +* 1.0.2 + + Bug fixes: + - Fix junk filling of large objects, which could cause memory corruption. + - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual + memory limits could cause swap file configuration to fail. Contributed by + Jordan DeLong. + +* 1.0.1 + + Bug fixes: + - Fix compilation when --enable-fill is specified. + - Fix threads-related profiling bugs that affected accuracy and caused memory + to be leaked during thread exit. + - Fix dirty page purging race conditions that could cause crashes. + - Fix crash in tcache flushing code during thread destruction. + +* 1.0.0 + + This release focuses on speed and run-time introspection. Numerous + algorithmic improvements make this release substantially faster than its + predecessors. + + New features: + - Implement autoconf-based configuration system. + - Add mallctl*(), for the purposes of introspection and run-time + configuration. + - Make it possible for the application to manually flush a thread's cache, via + the "tcache.flush" mallctl. + - Base maximum dirty page count on proportion of active memory. + - Compute various addtional run-time statistics, including per size class + statistics for large objects. + - Expose malloc_stats_print(), which can be called repeatedly by the + application. + - Simplify the malloc_message() signature to only take one string argument, + and incorporate an opaque data pointer argument for use by the application + in combination with malloc_stats_print(). + - Add support for allocation backed by one or more swap files, and allow the + application to disable over-commit if swap files are in use. + - Implement allocation profiling and leak checking. + + Removed features: + - Remove the dynamic arena rebalancing code, since thread-specific caching + reduces its utility. + + Bug fixes: + - Modify chunk allocation to work when address space layout randomization + (ASLR) is in use. + - Fix thread cleanup bugs related to TLS destruction. + - Handle 0-size allocation requests in posix_memalign(). + - Fix a chunk leak. The leaked chunks were never touched, so this impacted + virtual memory usage, but not physical memory usage. + +* linux_20080828a, linux_20080827a + + These snapshot releases are the simple result of incorporating Linux-specific + support into the FreeBSD malloc sources. + +-------------------------------------------------------------------------------- +vim:filetype=text:textwidth=80 diff --git a/jemalloc/INSTALL b/jemalloc/INSTALL index c5697c6d..d30f093f 100644 --- a/jemalloc/INSTALL +++ b/jemalloc/INSTALL @@ -35,9 +35,8 @@ any of the following arguments (not a definitive list) to 'configure': /etc/malloc.conf --> /etc/prefix_malloc.conf MALLOC_CONF --> PREFIX_MALLOC_CONF - This makes it possible to use jemalloc at the same time as the - system allocator, or even to use multiple copies of jemalloc - simultaneously. + This makes it possible to use jemalloc at the same time as the system + allocator, or even to use multiple copies of jemalloc simultaneously. By default, the prefix is "", except on OS X, where it is "je_". On OS X, jemalloc overlays the default malloc zone, but makes no attempt to actually @@ -58,12 +57,12 @@ any of the following arguments (not a definitive list) to 'configure': performance hit, but is very useful during application development. --enable-stats - Enable statistics gathering functionality. Use the 'P' option to print - detailed allocation statistics at exit. + Enable statistics gathering functionality. See the "opt.stats_print" + option documentation for usage details. --enable-prof - Enable heap profiling and leak detection functionality. Use the 'B', 'E', - 'F', 'I', 'L', and 'U' options to control these features. + Enable heap profiling and leak detection functionality. See the "opt.prof" + option documention for usage details. --disable-prof-libgcc Disable the use of libgcc's backtracing functionality. Ordinarily, libgcc's @@ -89,8 +88,8 @@ any of the following arguments (not a definitive list) to 'configure': --disable-tcache Disable thread-specific caches for small objects. Objects are cached and - released in bulk, thus reducing the total number of mutex operations. Use - the 'H', 'G', and 'M' options to control thread-specific caching. + released in bulk, thus reducing the total number of mutex operations. See + the "opt.tcache" option for suage details. --enable-swap Enable mmap()ed swap file support. When this feature is built in, it is @@ -102,18 +101,18 @@ any of the following arguments (not a definitive list) to 'configure': mmap(2). --enable-fill - Enable support for junk/zero filling of memory. Use the 'J' option to - control junk filling, or the 'Z' option to control zero filling. + Enable support for junk/zero filling of memory. See the "opt.junk"/ + "opt.zero" option documentation for usage details. --enable-xmalloc Enable support for optional immediate termination due to out-of-memory errors, as is commonly implemented by "xmalloc" wrapper function for malloc. - Use the 'X' option to control termination behavior. + See the "opt.xmalloc" option documentation for usage details. --enable-sysv Enable support for System V semantics, wherein malloc(0) returns NULL - rather than a minimal allocation. Use the 'V' option to control System V - compatibility. + rather than a minimal allocation. See the "opt.sysv" option documentation + for usage details. --enable-dynamic-page-shift Under most conditions, the system page size never changes (usually 4KiB or diff --git a/jemalloc/README b/jemalloc/README index 2ff36ef6..4d7b552b 100644 --- a/jemalloc/README +++ b/jemalloc/README @@ -1,9 +1,9 @@ jemalloc is a general-purpose scalable concurrent malloc(3) implementation. This distribution is a stand-alone "portable" implementation that currently -targets only Linux. jemalloc is included as the default allocator in the -FreeBSD and NetBSD operating systems, and it is used by the Mozilla Firefox web -browser on Microsoft Windows-related platforms. Depending on your needs, one -of the other divergent versions may suit your needs better than this +targets Linux and Apple OS X. jemalloc is included as the default allocator in +the FreeBSD and NetBSD operating systems, and it is used by the Mozilla Firefox +web browser on Microsoft Windows-related platforms. Depending on your needs, +one of the other divergent versions may suit your needs better than this distribution. The COPYING file contains copyright and licensing information. @@ -11,4 +11,6 @@ The COPYING file contains copyright and licensing information. The INSTALL file contains information on how to configure, build, and install jemalloc. +The ChangeLog file contains a brief summary of changes for each release. + URL: http://www.canonware.com/jemalloc/