Maks Naumov
ce5c073fe5
Fix MSVC build
2018-07-05 13:50:01 -07:00
Qi Wang
cdf15b458a
Rename huge_threshold to experimental, and tweak documentation.
2018-06-29 10:35:02 -07:00
Qi Wang
ff622eeab5
Add unit test for opt.huge_threshold.
2018-06-29 10:35:02 -07:00
Qi Wang
1302af4c43
Add ctl and stats for opt.huge_threshold.
2018-06-29 10:35:02 -07:00
Qi Wang
79522b2fc2
Refactor arena_is_auto.
2018-06-29 10:35:02 -07:00
Qi Wang
94a88c26f4
Implement huge arena: opt.huge_threshold.
...
The feature allows using a dedicated arena for huge allocations. We want the
addtional arena to separate huge allocation because: 1) mixing small extents
with huge ones causes fragmentation over the long run (this feature reduces VM
size significantly); 2) with many arenas, huge extents rarely get reused across
threads; and 3) huge allocations happen way less frequently, therefore no
concerns for lock contention.
2018-06-29 10:35:02 -07:00
Qi Wang
77a71ef2b7
Fall back to the default pthread_create if RTLD_NEXT fails.
2018-06-28 13:18:21 -07:00
David Goldblatt
d1e11d48d4
Move tsd link and in_hook after tcache.
...
This can lead to better cache utilization down the common paths where we don't
touch the link.
2018-06-27 13:39:02 -07:00
Qi Wang
50820010fe
Add test for remote deallocation.
2018-06-26 23:13:15 -07:00
Qi Wang
fec1ef7c91
Fix arena locking in tcache_bin_flush_large().
...
This regression was introduced in c834912
(incorrect arena used).
2018-06-26 23:13:15 -07:00
Qi Wang
0ff7ff3ec7
Optimize ixalloc by avoiding a size lookup.
2018-06-05 21:03:51 -07:00
Qi Wang
c834912aa9
Avoid taking large_mtx for auto arenas.
...
On tcache flush path, we can avoid touching the large_mtx for auto arenas, since
it was only needed for manual arenas where arena_reset is allowed.
2018-06-05 15:16:03 -07:00
Qi Wang
9bd8deb260
Fix stats output for opt.lg_extent_max_active_fit.
2018-06-05 10:23:28 -07:00
Qi Wang
d22e150320
Avoid taking extents_muzzy mutex when muzzy is disabled.
...
When muzzy decay is disabled, no need to allocate from extents_muzzy. This
saves us a couple of mutex operations down the extents_alloc path.
2018-05-24 14:40:56 -07:00
David Goldblatt
a7f749c9af
Hooks: Protect against reentrancy.
...
Previously, we made the user deal with this themselves, but that's not good
enough; if hooks may allocate, we should test the allocation pathways down
hooks. If we're doing that, we might as well actually implement the protection
for the user.
2018-05-18 11:43:03 -07:00
David Goldblatt
0379235f47
Tests: Shouldn't be able to change global slowness.
...
This can help ensure that we don't leave slowness changes behind in case of
resource exhaustion.
2018-05-18 11:43:03 -07:00
David Goldblatt
59e371f463
Hooks: Add a hook exhaustion test.
...
When we run out of space in which to store hooks, we should return EAGAIN from
the mallctl, but not otherwise misbehave.
2018-05-18 11:43:03 -07:00
David Goldblatt
bb071db92e
Mallctl: Add experimental.hooks.[install|remove].
2018-05-18 11:43:03 -07:00
David Goldblatt
126e9a84a5
Hooks: move the "extra" pointer into the hook_t itself.
...
This simplifies the mallctl call to install a hook, which should only take a
single argument.
2018-05-18 11:43:03 -07:00
David Goldblatt
cb0707c0fc
Hooks: hook the realloc pathways that move/expand.
2018-05-18 11:43:03 -07:00
David Goldblatt
67270040a5
Hooks: hook the realloc paths that act as pure malloc/free.
2018-05-18 11:43:03 -07:00
David Goldblatt
83e516154c
Hooks: hook the pure-expand function.
2018-05-18 11:43:03 -07:00
David Goldblatt
c154f5881b
Hooks: hook the pure-deallocation functions.
2018-05-18 11:43:03 -07:00
David Goldblatt
226327cf66
Hooks: hook the pure-allocation functions.
2018-05-18 11:43:03 -07:00
David Goldblatt
fe0e399385
Hooks: add an early-exit path for the common no-hook case.
2018-05-18 11:43:03 -07:00
David Goldblatt
5ae6e7cbfa
Add "hook" module.
...
The hook module allows a low-reader-overhead way of finding hooks to invoke and
calling them.
For now, none of the allocation pathways are tied into the hooks; this will come
later.
2018-05-18 11:43:03 -07:00
David Goldblatt
06a8c40b36
Add the Seq module, a simple seqlock implementation.
...
This allows fast reader-writer concurrency in cases where writers are rare. The
immediate use case is for the hooking implementaiton.
2018-05-18 11:43:03 -07:00
David Goldblatt
c7a87e0e0b
Rename hooks module to test_hooks.
...
"Hooks" is really the best name for the module that will contain the publicly
exposed hooks. So lets rename the current "hooks" module (that hook external
dependencies, for reentrancy testing) to "test_hooks".
2018-05-18 11:43:03 -07:00
David Goldblatt
e870829e64
TSD: Add the ability to enter a global slow path.
...
This gives any thread the ability to send other threads down slow paths the next
time they fetch tsd.
2018-05-18 11:43:03 -07:00
David Goldblatt
feff510b9f
TSD: Pull name mangling into a macro.
2018-05-18 11:43:03 -07:00
David Goldblatt
39d6420c0c
TSD: Make state atomic.
...
This will let us change the state of another thread remotely, eventually.
2018-05-18 11:43:03 -07:00
David Goldblatt
982c10de35
TSD: Make all state access happen through a function.
...
Shortly, tsd state will be atomic and have some complicated enough logic down
the state-setting path that we should be aware of it.
2018-05-18 11:43:03 -07:00
David Goldblatt
e74a1a37c8
Atomics: Add atomic_u8_t, force-inline operations.
...
We're about to need an atomic uint8_t for state operations.
Unfortunately, we're at the point where things won't get inlined into the key
methods unless they're force-inlined. This is embarassing and we should do
something about it, but in the meantime we'll force-inline a little more when we
need to.
2018-05-18 11:43:03 -07:00
Qi Wang
09edea3f5c
Tweak the format of the per arena summary section.
...
Increase the width to ensure enough space for long running programs.
2018-05-17 12:58:56 -07:00
Qi Wang
b293a3eb86
Fix the max_background_thread test.
...
We may set number of background threads separately, e.g. through
--with-malloc-conf, so avoid assuming the default number in the test.
2018-05-15 14:00:51 -07:00
Qi Wang
312352faa8
Fix background thread index issues with max_background_threads.
2018-05-15 12:25:23 -07:00
Qi Wang
e8a63b87c3
Fix an incorrect assertion.
...
When configured with --with-lg-page, it's possible for the configured page size
to be greater than the system page size, in which case the page address may only
be aligned with the system page size.
2018-05-09 23:52:56 -07:00
Qi Wang
61efbda709
Merge branch 'dev'
2018-05-08 12:12:50 -07:00
Qi Wang
1c51381b7c
Update ChangeLog for 5.1.0.
2018-05-08 12:06:34 -07:00
David T. Goldblatt
e94ca7f3e2
run_tests.sh: Don't test large vaddr with -m32.
2018-05-08 11:20:25 -07:00
Qi Wang
a308af360c
Reformat the version number in jemalloc.pc.in.
2018-05-07 20:12:03 -07:00
Christoph Muellner
b73380bee0
Fix include path order for out-of-tree builds.
...
When configuring out-of-tree (source directory is not build directory),
the generated include files from the build directory should have higher
priority than those in the source dir.
This is especially helpful when cross-compiling.
Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
2018-05-05 10:11:22 -07:00
David Goldblatt
4c8829e692
run_tests.sh: Test --with-lg-vaddr.
2018-05-04 15:50:12 -07:00
David Goldblatt
b001e6e740
INSTALL.md: Clarify --with-lg-vaddr.
...
The current wording can be taken to imply that we return tagged pointers to the
user, or otherwise rely on architectural support for them.
2018-05-04 15:50:12 -07:00
Christoph Muellner
63712b4c4e
configure: Add --with-lg-vaddr configure option.
...
This patch allows to override the lg-vaddr values, which
are defined by the build machine's CPUID information (x86_64)
or default values (other architectures like aarch64).
Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
2018-05-04 10:34:10 -07:00
Qi Wang
95789a24fa
Update copyright dates.
2018-05-03 15:31:42 -07:00
Qi Wang
2e7af1af73
Add TUNING.md.
2018-05-03 12:52:52 -07:00
Qi Wang
3bcaedeea2
Remove documentation for --disable-thp which was removed.
2018-05-03 12:52:52 -07:00
Qi Wang
c5b72a92cc
Fix a typo in INSTALL.md.
2018-05-02 15:08:49 -07:00
Latchesar Ionkov
a32b7bd567
Mallctl: Add arenas.lookup
...
Implement a new mallctl operation that allows looking up the arena a
region of memory belongs to.
2018-05-01 13:14:36 -07:00