| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Add mallctl interfaces for profiling parameters.
Fix a file descriptor leak in heap profile dumping.
|
| |
|
|
|
| |
Bootstrap profiling in three stages, so that it is usable by the time
the first application allocation occurs.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
This feature caused significant performance degradation, and the
fragmentation reduction benefits were difficult to quantify.
|
| |
|
|
| |
Initialize malloc before calling into the ctl_*() functions.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Revert to simpler lock acquistion/release code in
malloc_{pre,post}fork(), since dynamic arena rebalancing is no longer
implemented.
|
| |
|
|
|
|
|
|
| |
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 malloc_message() and malloc_stats_print(), and
propagate the change through all the internal APIs as necessary.
|
| |
|
|
| |
Add malloc_cprintf() and malloc_vcprintf().
|
| |
|
|
| |
Fix some bugs in the Makefile's install target.
|
| |
|
|
|
|
|
|
|
| |
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)).
|
| |
|
|
| |
destructors may run after tcache_tsd's.
|
| | |
|
| |
|
|
|
|
| |
rather than just enabling/disabling the tcache.
Fix an off-by-one bug in large object stats recording.
|
| |
|
|
| |
just enabling/disabling GC.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
Incrementally merge tcache stats, so that malloc_stats_print() always reports
at least most events that have occurred thus far.
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Add dirty page tracking for pages within active small/medium object runs.
Reduce chunks_dirty red-black tree operations via lazy updating.
|
| |
|
|
| |
Remove the default definition for SIZEOF_INT_2POW.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
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 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.
|
| |
|
|
| |
and heap allocation are always enabled.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Rename jemalloc_options-->malloc_options and jemalloc_message-->malloc_message.
|
| | |
|
| |
|
|
| |
encode bin indices in [0..255].
|
| |
|
|
| |
Submitted by: Ingvar Hagelund
|
| |
|
|
|
|
| |
Fix some style nits.
Ignore the jemalloc/bin directory.
|
| |
|
|
|
|
|
| |
implementation, calls free() after calling TSD destructors. This was causing a
crash during thread exit, since the magazine rack was no longer valid for the
thread. Fix this by using a special mag_rack value to indicate that
deallocation should bypass the magazine machinery.
|
| | |
|
| |
|
|
| |
initializtion.
|
| | |
|
| |
|
|
|
|
| |
Add configure test for __asm__ syntax.
Add configure test for __attribute__ syntax.
|
| |
|
|
| |
Reported by: Mark Rabkin
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
jemalloc is configured.
Modify arena_malloc() API to avoid unnecessary choose_arena() calls. Remove
unnecessary code from choose_arena().
Enable lazy-lock by default, now that choose_arena() is both faster and out of
the critical path.
Implement objdir support in the build system.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement minimal Makefile.
Make compile-time-optional jemalloc features controllable via configure
options (debug, stats, tiny, mag, balance, dss).
Conditionally exclude most of the opt_* run-time options, based on configure
options (fill, xmalloc, sysv).
Implement optional --enable-dynamic-page-shift.
Implement optional --enable-lazy-lock.
Re-order malloc_init_hard() and use the malloc_initializer variable to support
recursive allocation in malloc_ncpus().
Add mag_rack_tsd in order to receive notifications of thread termination.
Add jemalloc.h.
|
| | |
|