summaryrefslogtreecommitdiffstats
path: root/jemalloc
Commit message (Collapse)AuthorAgeFilesLines
...
* Simplify tcache object caching.Jason Evans2010-03-148-247/+172
| | | | | | | | | | | | | | | | | | | | Use chains of cached objects, rather than using arrays of pointers. Since tcache_bin_t is no longer dynamically sized, convert tcache_t's tbin to an array of structures, rather than an array of pointers. This implicitly removes tcache_bin_{create,destroy}(), which further simplifies the fast path for malloc/free. Use cacheline alignment for tcache_t allocations. Remove runtime configuration option for number of tcache bin slots, and replace it with a boolean option for enabling/disabling tcache. Limit the number of tcache objects to the lesser of TCACHE_NSLOTS_MAX and 2X the number of regions per run for the size class. For GC-triggered flush, discard 3/4 of the objects below the low water mark, rather than 1/2.
* Modify dirty page purging algorithm.Jason Evans2010-03-054-75/+80
| | | | | | | | | | | | | | | | Convert chunks_dirty from a red-black tree to a doubly linked list, and use it to purge dirty pages from chunks in FIFO order. Add a lock around the code that purges dirty pages via madvise(2), in order to avoid kernel contention. If lock acquisition fails, indefinitely postpone purging dirty pages. Add a lower limit of one chunk worth of dirty pages per arena for purging, in addition to the active:dirty ratio. When purging, purge all dirty pages from at least one chunk, but rather than purging enough pages to drop to half the purging threshold, merely drop to the threshold.
* Print version in malloc_stats_print().Jason Evans2010-03-041-0/+5
|
* Simplify malloc_message().Jason Evans2010-03-0413-248/+270
| | | | | Rather than passing four strings to malloc_message(), malloc_write4(), and all the functions that use them, only pass one string.
* Fix various config/build issues.Jason Evans2010-03-043-17/+35
| | | | | | | | | | | | | Don't look for a shared libunwind if --with-static-libunwind is specified. Set SONAME when linking the shared libjemalloc. Add DESTDIR support. Add install_{include,lib/man} build targets. Clean up compiler flag configuration.
* Move sampling init into prof_alloc_prep().Jason Evans2010-03-031-39/+51
| | | | | Move prof_sample_threshold initialization into prof_alloc_prep(), before using it to decide whether to capture a backtrace.
* Add the --with-static-libunwind configure option.Jason Evans2010-03-022-1/+18
|
* 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.