| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
This lives in the cache_bin module; just a typo.
|
|
|
|
|
| |
In the process, kill arena_bin_index, which is unused. To follow are several
diffs continuing this separation.
|
|
|
|
|
|
| |
This is the first step towards breaking up the tcache and arena (since they
interact primarily at the bin level). It should also make a future arena
caching implementation more straightforward.
|
| |
|
|
|
|
|
| |
This reverts commit 8584adc451f31adfc4ab8693d9189cf3a7e5d858. Production
results not favorable. Will investigate separately.
|
|
|
|
|
|
| |
This reverts commit b0c2a28280d363fc85aa8b4fdbe7814ef46cb17b. Production
benchmark shows this caused significant regression in both CPU and memory
consumption. Will investigate separately later on.
|
|
|
|
| |
Only do must_flush if try_flush didn't manage to free anything.
|
|
|
|
|
| |
During tcache gc, use tcache_bin_try_flush_small / _large so that we can skip
items with their bins locked already.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Simplify configuration by removing the --disable-tcache option, but
replace the testing for that configuration with
--with-malloc-conf=tcache:false.
Fix the thread.arena and thread.tcache.flush mallctls to work correctly
if tcache is disabled.
This partially resolves #580.
|
| |
|
| |
|
|
|
|
|
|
| |
Added tsd_state_nominal_slow, which on fast path malloc() incorporates
tcache_enabled check, and on fast path free() bundles both malloc_slow and
tcache_enabled branches.
|
|
|
|
|
|
|
|
|
|
| |
1) Re-organize TSD so that frequently accessed fields are closer to the
beginning and more compact. Assuming 64-bit, the first 2.5 cachelines now
contains everything needed on tcache fast path, expect the tcache struct itself.
2) Re-organize tcache and tbins. Take lg_fill_div out of tbin, and reduce tbin
to 24 bytes (down from 32). Split tbins into tbins_small and tbins_large, and
place tbins_small close to the beginning.
|
| |
|
|
|
|
|
|
|
|
|
| |
The embedded tcache is initialized upon tsd initialization. The avail arrays
for the tbins will be allocated / deallocated accordingly during init / cleanup.
With this change, the pointer to the auto tcache will always be available, as
long as we have access to the TSD. tcache_available() (called in tcache_get())
is provided to check if we should use tcache.
|
|
|
|
|
|
|
|
| |
Rather than storing usize only for large (and prof-promoted)
allocations, store the size class index for allocations that reside
within the extent, such that the size class index is valid for all
extents that contain extant allocations, and invalid otherwise (mainly
to make debugging simpler).
|
|
|
|
| |
This resolves #540.
|
|
|
|
|
|
|
| |
Add braces around single-line blocks, and remove line breaks before
function-opening braces.
This resolves #537.
|
|
|
|
| |
This resolves #535.
|
|
This is part of a broader change to make header files better represent the
dependencies between one another (see
https://github.com/jemalloc/jemalloc/issues/533). It breaks up component headers
into smaller parts that can be made to have a simpler dependency graph.
For the autogenerated headers (smoothstep.h and size_classes.h), no splitting
was necessary, so I didn't add support to emit multiple headers.
|