summaryrefslogtreecommitdiffstats
path: root/jemalloc
Commit message (Collapse)AuthorAgeFilesLines
...
* Implement interval-based heap profile dumping.Jason Evans2010-02-1110-76/+292
| | | | | | Add mallctl interfaces for profiling parameters. Fix a file descriptor leak in heap profile dumping.
* Add JEMALLOC_PROF_PREFIX support.Jason Evans2010-02-113-14/+64
| | | | | If JEMALLOC_PROF_PREFIX is set in the environment, use it as the filename prefix when dumping heap profiles, rather than "jeprof".
* Dump /proc/<pid>/maps in heap profiles.Jason Evans2010-02-111-0/+52
|
* Fix a profiling bootstrap bug.Jason Evans2010-02-113-13/+25
| | | | | Bootstrap profiling in three stages, so that it is usable by the time the first application allocation occurs.
* Various heap profiling improvements.Jason Evans2010-02-1111-30/+118
| | | | | | | | | Add the --disable-prof-libgcc configure option, and add backtracing based on libgcc, which is used by default. Fix a bug in hash(). Fix various configuration-dependent compilation errors.
* Implement allocation profiling and leack checking.Jason Evans2010-02-1025-166/+2824
| | | | | | | | | | | | | | Add the --enable-prof and --enable-prof-libunwind configure options. Add the B/b, F/f, I/i, L/l, and U/u JEMALLOC_OPTIONS. Interval-based profile dump triggering is not yet implemented. Add supporting generic code: * Add memory barriers. * Add prn (LCG PRNG). * Add hash (Murmur hash function). * Add ckh (cuckoo hash tables).
* Fix some comments and whitespace.Jason Evans2010-01-314-3/+5
|
* Fix large object stats collection bugs.Jason Evans2010-01-311-25/+31
|
* Fix bootstrapping crash.Jason Evans2010-01-294-22/+30
| | | | | | | | | | | | | If a custom small_size2bin table was required due to non-default size class settings, memory allocation prior to initializing chunk parameters would cause a crash due to division by 0. The fix re-orders the various *_boot() function calls. Bootstrapping is simpler now than it was before the base allocator started just using the chunk allocator directly. This allows arena_boot[01]() to be combined. Add error detection for pthread_atfork() and atexit() function calls.
* Remove tcache bin sorting during flush.Jason Evans2010-01-296-98/+0
| | | | | This feature caused significant performance degradation, and the fragmentation reduction benefits were difficult to quantify.
* Statistics fixes and cleanup.Jason Evans2010-01-293-17/+17
| | | | | | | | | | | Fix a type mismatch for "arenas.nlruns" mallctl access. This bug caused a crash during statistics printing on 64-bit systems. Fix the "stats.active" mallctl to include active memory in huge objects. Report active bytes for the whole application, as well as per arena. Remove several unused variables.
* Fix a chunk leak in chunk_alloc_mmap().Jason Evans2010-01-282-2/+13
| | | | | | | | A missing 'else' in chunk_alloc_mmap() caused an extra chunk to be allocated every time the optimistic alignment path was entered, since the following block would always be executed immediately afterward. This chunk leak caused no increase in physical memory usage, but virtual memory could grow until resource exaustion caused allocation failures.
* madvise(..., MADV_{RANODOM,NOSYNC}) swap files.Jason Evans2010-01-272-0/+22
| | | | Initialize malloc before calling into the ctl_*() functions.
* Implement mallctl{nametomib,bymib}().Jason Evans2010-01-2717-469/+2653
| | | | | | | | | | | | | Replace chunk stats code that was missing locking; this fixes a race condition that could corrupt chunk statistics. Converting malloc_stats_print() to use mallctl*(). Add a missing semicolon in th DSS code. Convert malloc_tcache_flush() to a mallctl. Convert malloc_swap_enable() to a set of mallctl's.
* Simplify malloc_{pre,post}fork().Jason Evans2010-01-251-37/+9
| | | | | | Revert to simpler lock acquistion/release code in malloc_{pre,post}fork(), since dynamic arena rebalancing is no longer implemented.
* Print merged arena stats iff multiple arenas.Jason Evans2010-01-251-7/+16
|
* Modify chunk_alloc() to support optional zeroing.Jason Evans2010-01-259-24/+44
| | | | | | | Use optional zeroing in arena_chunk_alloc() to avoid needless zeroing of chunks. This is particularly important in the context of swapfile and DSS allocation, since a long-lived application may commonly recycle chunks.
* Various minor cleanups.Jason Evans2010-01-255-17/+32
| | | | | | | | | | | Clean up whitespace. Lock access of swap_avail when printing stats. Use inttypes.h for portable printf() format specifiers, specifically for uint64_t (PRIu64). Change highchunks and curchunks stats from (unsigned long) to (size_t).
* Add the --enable-swap configure option.Jason Evans2010-01-2423-571/+1105
| | | | | | | | Add malloc_swap_enable(). Add the O/o JEMALLOC_OPTIONS flags, which control memory overcommit. Fix mapped memory stats reporting for arenas.
* Add the w4opaque argument to numerous functions.Jason Evans2010-01-198-120/+157
| | | | | Add the w4opaque argument malloc_message() and malloc_stats_print(), and propagate the change through all the internal APIs as necessary.
* Add merged arena stats printing.Jason Evans2010-01-184-111/+255
| | | | Add the "m" and "a" opts flags for malloc_stats_print().
* Merge branch 'disable-tls'Jason Evans2010-01-172-26/+45
|\
| * Add the --disable-tls configure option.Jason Evans2010-01-172-26/+45
| |
* | Add the write4 parameter to malloc_stats_print().Jason Evans2010-01-177-87/+155
|/ | | | Add malloc_cprintf() and malloc_vcprintf().
* Add the --with-install-suffix configure option.Jason Evans2010-01-1732-95/+157
| | | | Fix some bugs in the Makefile's install target.
* Refactor jemalloc.c into multiple source files.Jason Evans2010-01-1625-5500/+5971
| | | | | | | | | Fix a stats bug in large object curruns accounting. Replace tcache_bin_fill() with arena_tcache_fill(), and fix a bug in an OOM error path. Fix API name mangling to coexist with __attribute__((malloc)).
* Support malloc() even after tcache destruction has occurred, since other tsdJason Evans2010-01-131-12/+11
| | | | destructors may run after tcache_tsd's.
* Fix some other minor build system bugs.Jason Evans2010-01-041-8/+15
|
* Add the S/s JEMALLOC_OPTIONS flags to enable/disable tcache bin sorting.Jason Evans2010-01-042-1/+22
|
* Enhance the H/h MALLOC_OPTIONS flags to control the number of tcache bin slots,Jason Evans2010-01-042-63/+82
| | | | | | rather than just enabling/disabling the tcache. Fix an off-by-one bug in large object stats recording.
* Enhance the G/g MALLOC_OPTIONS flags to control GC sweep interval, rather thanJason Evans2010-01-032-15/+43
| | | | just enabling/disabling GC.
* Split run deallocation out of arena_dalloc_bin(), into arena_dalloc_bin_run().Jason Evans2010-01-031-47/+89
| | | | | | | | | | | | | Enhance bin run deallocation to avoid marking all pages as dirty, since the dirty bits are already correct for all but the first page, due to the use of arena_run_rc_{incr,decr}(). This tends to dramatically reduce the number of pages that are marked dirty. Modify arena_bin_run_size_calc() to assure that bin run headers never exceed one page. In practice, this can't happen unless hard-coded constants (related to RUN_MAX_OVRHD) are modified, but the dirty page tracking code assumes bin run headers never extend past the first page, so it seems worth making this a universally valid assumption.
* Make malloc_stats_print() a public symbol, and make it repeatedly callable.Jason Evans2010-01-035-386/+479
| | | | | Incrementally merge tcache stats, so that malloc_stats_print() always reports at least most events that have occurred thus far.
* Simplify JEMALLOC_ATTR_* macros to become JEMALLOC_ATTR().Jason Evans2010-01-036-29/+42
| | | | | | | | | | | Use JEMALLOC_ATTR(tls_model("initial-exec)) instead of -ftls-model=initial-exec so that libjemalloc_pic.a can be directly linked into another library without needing linker options changes. Add attributes to malloc, calloc, and posix_memalign, for compatibility with glibc's declarations. Add function prototypes for the standard malloc(3) API.
* Build libjemalloc_pic.a.Jason Evans2010-01-031-4/+7
|
* Add the COPYING file, and consolidate copyright/licensing information.Jason Evans2010-01-0311-306/+57
|
* Fix the 'clean' build target to delete binaries.Jason Evans2009-12-291-0/+1
|
* Implement per size class stats collection for large objects.Jason Evans2009-12-291-52/+150
|
* Base maximum dirty page count on proportion of active memory.Jason Evans2009-12-292-73/+250
| | | | | | Add dirty page tracking for pages within active small/medium object runs. Reduce chunks_dirty red-black tree operations via lazy updating.
* Update description of --with-rpath.Jason Evans2009-12-291-2/+2
|
* Use "lg" prefix rather than "2pow" suffix to indicate base 2 logarithms.Jason Evans2009-12-293-123/+130
| | | | Remove the default definition for SIZEOF_INT_2POW.
* Modify pthread_create() wrapper such that isthreaded is only set once.Jason Evans2009-12-291-3/+7
|
* Handle 0-size allocation requests in posix_memalign().Jason Evans2009-12-291-2/+36
|
* Convert thread-specific caching from magazines, and implement incremental GC.Jason Evans2009-12-298-419/+845
| | | | | | | | Add the 'G'/'g' and 'H'/'h' MALLOC_OPTIONS flags. Add the malloc_tcache_flush() function. Disable thread-specific caching until the application goes multi-threaded.
* Add support for medium size classes, [4KiB..32KiB], 2KiB apart by default.Jason Evans2009-12-292-270/+468
| | | | | | | | | | | Add the 'M' and 'm' MALLOC_OPTIONS flags, which control the maximum medium size class. Relax the cap on small/medium run size to arena_maxclass. Reduce arena_run_reg_dalloc() integer division code complexity. Increase the default chunk size from 1MiB to 4MiB.
* Remove opt_dss and opt_mmap, such that if DSS allocation is enabled, both DSSJason Evans2009-12-292-92/+20
| | | | and heap allocation are always enabled.
* Streamline the fast path for magazine-based allocation/deallocation.Jason Evans2009-12-291-60/+118
|
* Remove the dynamic rebalancing code, since magazines reduce its utility.Jason Evans2009-12-295-424/+69
|
* Implement thread-aware allocation event tracing.Jason Evans2009-12-298-250/+571
|
* Add --with-jemalloc-prefix, which supports API mangling.Jason Evans2009-12-297-113/+165
| | | | Rename jemalloc_options-->malloc_options and jemalloc_message-->malloc_message.