diff options
author | Jason Evans <jasone@canonware.com> | 2015-05-04 16:58:36 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2015-05-06 20:27:39 (GMT) |
commit | 8a03cf039cd06f9fa6972711195055d865673966 (patch) | |
tree | 8e5f25a7877b3352dfa47ed34cdef9d9f34da130 /ChangeLog | |
parent | 6bb54cb9da9cb0f996c16c6ea3e1dda0755390f5 (diff) | |
download | jemalloc-8a03cf039cd06f9fa6972711195055d865673966.zip jemalloc-8a03cf039cd06f9fa6972711195055d865673966.tar.gz jemalloc-8a03cf039cd06f9fa6972711195055d865673966.tar.bz2 |
Implement cache index randomization for large allocations.
Extract szad size quantization into {extent,run}_quantize(), and .
quantize szad run sizes to the union of valid small region run sizes and
large run sizes.
Refactor iteration in arena_run_first_fit() to use
run_quantize{,_first,_next(), and add support for padded large runs.
For large allocations that have no specified alignment constraints,
compute a pseudo-random offset from the beginning of the first backing
page that is a multiple of the cache line size. Under typical
configurations with 4-KiB pages and 64-byte cache lines this results in
a uniform distribution among 64 page boundary offsets.
Add the --disable-cache-oblivious option, primarily intended for
performance testing.
This resolves #13.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -101,6 +101,9 @@ found in the git revision history: run fragmentation, smaller runs reduce external fragmentation for small size classes, and packed (less uniformly aligned) metadata layout improves CPU cache set distribution. + - Randomly distribute large allocation base pointer alignment relative to page + boundaries in order to more uniformly utilize CPU cache sets. This can be + disabled via the --disable-cache-oblivious configure option. - Micro-optimize the fast paths for the public API functions. - Refactor thread-specific data to reside in a single structure. This assures that only a single TLS read is necessary per call into the public API. |