summaryrefslogtreecommitdiffstats
path: root/jemalloc
Commit message (Collapse)AuthorAgeFilesLines
* Add release versioning support.0.0.0Jason Evans2010-03-026-2/+32
| | | | | | | Base version string on 'git describe --long', and provide cpp macros in jemalloc.h. Add the version mallctl.
* Allow prof.dump mallctl to specify filename.Jason Evans2010-03-024-78/+134
|
* Edit rb documentation.Jason Evans2010-03-021-7/+6
|
* Implement sampling for heap profiling.Jason Evans2010-03-029-59/+201
|
* Rewrite red-black trees.Jason Evans2010-02-284-803/+842
| | | | | | | | | | | Use left-leaning 2-3 red-black trees instead of left-leaning 2-3-4 red-black trees. This reduces maximum tree height from (3 lg n) to (2 lg n). Do lazy balance fixup, rather than transforming the tree during the down pass. This improves insert/remove speed by ~30%. Use callback-based iteration rather than macros.
* Don't implicitly enable interval-based profiling.Jason Evans2010-02-161-1/+1
|
* Fix a bug in nmalloc stats.Jason Evans2010-02-121-2/+0
|
* Fix a man page typo.Jason Evans2010-02-121-1/+2
|
* Fix #include ordering for mb.h.Jason Evans2010-02-111-4/+4
| | | | | Include mb.h after mutex.h, in case it actually has to use the mutex-based memory barrier implementation.
* Avoid extra dumping for JEMALLOC_OPTIONS=L.Jason Evans2010-02-111-4/+6
|
* Wrap mallctl* references with JEMALLOC_P().Jason Evans2010-02-112-23/+33
|
* Restructure source tree.Jason Evans2010-02-1143-116/+102
|
* Remove tracing (--enable-trace).Jason Evans2010-02-1117-1885/+13
| | | | | | | Remove all functionality related to tracing. This functionality was useful for understanding memory fragmentation during early algorithmic design of jemalloc, but it had little utility for non-trivial applications, due to the sheer volume of data written to disk.
* 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
|