| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
| |
| |
| |
| | |
Since this is an intrusive tree, rbt_nil is the whole size of the node
and can be quite large. For example, miscelm is ~100 bytes.
|
| | |
| |
| |
| |
| | |
Reduce run quantization overhead by generating lookup tables during
bootstrapping, and using the tables for all subsequent run quantization.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In practice this bug had limited impact (and then only by increasing
chunk fragmentation) because run_quantize_ceil() returned correct
results except for inputs that could only arise from aligned allocation
requests that required more than page alignment.
This bug existed in the original run quantization implementation, which
was introduced by 8a03cf039cd06f9fa6972711195055d865673966 (Implement
cache index randomization for large allocations.).
|
| | |
| |
| |
| |
| | |
Also rename run_quantize_*() to improve clarity. These tests
demonstrate that run_quantize_ceil() is flawed.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
Use a single uint64_t in nstime_t to store nanoseconds rather than using
struct timespec. This reduces fragility around conversions between long
and uint64_t, especially missing casts that only cause problems on
32-bit platforms.
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
struct timespec is already defined by the system (at least on MinGW).
|
| | |
| |
| |
| |
| | |
Add jemalloc_ffs64() and use it instead of jemalloc_ffsl() in
prng_range(), since long is not guaranteed to be a 64-bit type.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
in Cygwin x64
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
Reported by Christopher Ferris <cferris@google.com>.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is an alternative to the existing ratio-based unused dirty page
purging, and is intended to eventually become the sole purging
mechanism.
Add mallctls:
- opt.purge
- opt.decay_time
- arena.<i>.decay
- arena.<i>.decay_time
- arenas.decay_time
- stats.arenas.<i>.decay_time
This resolves #325.
|
| | |
| |
| |
| |
| |
| | |
Check in a generated smootherstep table as smoothstep.h rather than
generating it at configure time, since not all systems (e.g. Windows)
have dc.
|
| | |
| |
| |
| |
| | |
Refactor out arena_compute_npurge() by integrating its logic into
arena_stash_dirty() as an incremental computation.
|
| | |
| |
| |
| |
| | |
Refactor arenas_cache tsd into arenas_tdata, which is a structure of
type arena_tdata_t.
|
| | |
| |
| |
| |
| | |
Refactor early return logic in arena_ralloc_no_move() to return early on
failure rather than on success.
|
| | | |
|
| | |
| |
| |
| |
| | |
Remove 32-bit variant, convert prng64() to prng_lg_range(), and add
prng_range().
|
| | | |
|
| | |
| |
| |
| |
| | |
Implement ticker, which provides a simple API for ticking off some
number of events before indicating that the ticker has hit its limit.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
Add --with-malloc-conf, which makes it possible to embed a default
options string during configuration.
|
| | | |
|
| | |
| |
| |
| |
| | |
Fix test_stats_arenas_summary to deallocate before asserting that
purging must have happened.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
Pass the retain and exclude parameters to the /pprof/symbol pprof server
endpoint so that the server has the opportunity to optimize which
symbols it looks up and/or returns mappings for.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Summary:
Currently an HTTP error response will still try to be parsed, resulting in these messages:
substr outside of string at /home/davejwatson/local/jemalloc-github/bin/jeprof line 3635, <PROFILE> line 1.
Use of uninitialized value in string eq at /home/davejwatson/local/jemalloc-github/bin/jeprof line 3635, <PROFILE> line 1.
substr outside of string at /home/davejwatson/local/jemalloc-github/bin/jeprof line 3637, <PROFILE> line 1.
Use of uninitialized value in string eq at /home/davejwatson/local/jemalloc-github/bin/jeprof line 3637, <PROFILE> line 1.
/home/davejwatson/jeprof/server.1452638936.localhost.pprof.heap: header size >= 2**16
After this fix, curl will return an error status code that will be correctly checked at line 3536, resulting in this error message:
Failed to get profile: curl -s --fail 'http://localhost:4010/pprof/heap' > /home/davejwatson/jeprof/.tmp.server.1452639085.localhost.pprof.heap: No such file or directory
Test Plan:
Tested with MALLOC_CONF="prof:false". Also tested fetching symbols. Didn't test redirects, but this should only affect http error codes >= 400
|
| | |
| |
| |
| | |
Merge of https://github.com/gperftools/gperftools/commit/5078abdb331e63d7a216994f186eb736861f8df7
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When using LinuxThreads, malloc bootstrapping deadlocks, since
malloc_tsd_boot0() ends up calling pthread_setspecific(), which causes
recursive allocation. Fix it by moving the malloc_tsd_boot0() call to
malloc_init_hard_recursible().
The deadlock was introduced by 8bb3198f72fc7587dc93527f9f19fb5be52fa553
(Refactor/fix arenas manipulation.), when tsd_boot() was split and the
top half, tsd_boot0(), got an extra tsd_wrapper_set() call.
|
| | |
| |
| |
| |
| | |
These options make it possible to filter symbolized backtrace frames
using regular expressions.
|
| | |
| |
| |
| | |
This resolves #293.
|
| | |
| |
| |
| | |
This resolves #294.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
- Combine multiple runtime branches into a single malloc_slow check.
- Avoid calling arena_choose / size2index / index2size on fast path.
- A few micro optimizations.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
ex_destroy iterates over the tree using post-order traversal so nodes
can be removed and processed by the callback function without paying the
cost to rebalance the tree. The destruction process cannot be stopped
once started.
|
| | |
| |
| |
| |
| |
| | |
Signed-off-by: Steve Dougherty <sdougherty@barracuda.com>
This resolves #281.
|