Qi Wang
394df9519d
Combine background_thread started / paused into state.
2017-06-12 08:56:14 -07:00
Qi Wang
b83b5ad44a
Not re-enable background thread after fork.
...
Avoid calling pthread_create in postfork handlers.
2017-06-12 08:56:14 -07:00
Qi Wang
464cb60490
Move background thread creation to background_thread_0.
...
To avoid complications, avoid invoking pthread_create "internally", instead rely
on thread0 to launch new threads, and also terminating threads when asked.
2017-06-12 08:56:14 -07:00
Jason Evans
13685ab1b7
Normalize background thread configuration.
...
Also fix a compilation error #ifndef JEMALLOC_PTHREAD_CREATE_WRAPPER.
2017-06-08 23:01:26 -07:00
Jason Evans
94d655b8bd
Update a UTRACE() size argument.
2017-06-08 15:33:52 -07:00
Jason Evans
faaf458bad
Remove redundant typedefs.
...
Pre-C11 compilers do not support typedef redefinition.
2017-06-08 13:28:57 -07:00
Qi Wang
5642f03cae
Add internal tsd for background_thread.
2017-06-08 10:02:18 -07:00
Qi Wang
73713fbb27
Drop high rank locks when creating threads.
...
Avoid holding arenas_lock and background_thread_lock when creating background
threads, because pthread_create may take internal locks, and potentially cause
deadlock with jemalloc internal locks.
2017-06-08 10:02:18 -07:00
Qi Wang
00869e39a3
Make tsd no-cleanup during tsd reincarnation.
...
Since tsd cleanup isn't guaranteed when reincarnated, we set up tsd in a way
that needs no cleanup, by making it going through slow path instead.
2017-06-07 11:03:49 -07:00
Qi Wang
29c2577ee0
Remove assertions on extent_hooks being default.
...
It's possible to customize the extent_hooks while still using part of the
default implementation.
2017-06-05 10:56:40 -07:00
Qi Wang
3a813946fb
Take background thread lock when setting extent hooks.
2017-06-05 10:56:25 -07:00
Qi Wang
530c07a45b
Set reentrancy level to 1 during init.
...
This makes sure we go down slow path w/ a0 in init.
2017-06-02 12:59:21 -07:00
Qi Wang
340071f0cf
Set isthreaded when enabling background_thread.
2017-06-01 17:34:49 -07:00
Qi Wang
c84ec3e9da
Fix background thread creation.
...
The state initialization should be done before pthread_create.
2017-06-01 09:00:07 -07:00
Jason Evans
fd0fa003e1
Test with background_thread:true.
...
Add testing for background_thread:true, and condition a xallocx() -->
rallocx() escalation assertion to allow for spurious in-place rallocx()
following xallocx() failure.
2017-06-01 08:55:27 -07:00
Jason Evans
b511232fcd
Refactor/fix background_thread/percpu_arena bootstrapping.
...
Refactor bootstrapping such that dlsym() is called during the
bootstrapping phase that can tolerate reentrant allocation.
2017-06-01 08:55:27 -07:00
Jason Evans
596b479d83
Skip default tcache testing if !opt_tcache.
2017-06-01 08:55:27 -07:00
David Goldblatt
fa35463d56
Witness assertions: only assert locklessness when non-reentrant.
...
Previously we could still hit these assertions down error paths or in the
extended API.
2017-05-31 17:02:54 -07:00
Qi Wang
508f54b02b
Use real pthread_create for creating background threads.
2017-05-31 16:48:13 -07:00
Jason Evans
9a86c9bd30
Clean source directory before building tests in object directories.
2017-05-31 15:07:30 -07:00
David Goldblatt
8261e581be
Header refactoring: Pull size helpers out of jemalloc module.
2017-05-31 13:08:45 -07:00
David Goldblatt
041e041e1f
Header refactoring: unify and de-catchall mutex_pool.
2017-05-31 13:08:45 -07:00
David Goldblatt
98774e64a4
Header refactoring: unify and de-catchall extent_mmap module.
2017-05-31 13:08:45 -07:00
David Goldblatt
93284bb53d
Header refactoring: unify and de-catchall extent_dss.
2017-05-31 13:08:45 -07:00
David Goldblatt
44f9bd147a
Header refactoring: unify and de-catchall rtree module.
2017-05-31 13:08:45 -07:00
David Goldblatt
b4b4a98bc8
Add /run_tests.out/ to .gitignore.
2017-05-31 10:37:48 -07:00
Jason Evans
10d090aae9
Pass the O_CLOEXEC flag to open(2).
...
This resolves #528 .
2017-05-31 08:50:35 -07:00
Qi Wang
66813916b5
Track background thread status separately at fork.
...
Use a separate boolean to track the enabled status, instead of leaving the
global background thread status inconsistent.
2017-05-31 08:27:31 -07:00
Qi Wang
2e4d1a4e30
Output total_wait_ns for bin mutexes.
2017-05-30 22:25:11 -07:00
Jason Evans
ff8062a511
Add jemalloc prefix to allocator functions pruned by jeprof.
...
This resolves #507 .
2017-05-30 20:22:00 -07:00
Qi Wang
7578b0e929
Explicitly say so when aborting on opt_abort_conf.
2017-05-30 17:37:35 -07:00
Jason Evans
685c97fc43
More thoroughly document the *.{nmalloc,ndalloc,nrequests} mallctls.
...
This resolves #412 .
2017-05-30 15:58:36 -07:00
Jason Evans
c606a87d2a
Add the --disable-thp option to support cross compiling.
...
This resolves #669 .
2017-05-30 11:30:54 -07:00
Qi Wang
bf6673a070
Fix npages during arena_decay_epoch_advance().
...
We do not lock extents while advancing epoch. This change makes sure that we
only read npages from extents once in order to avoid any inconsistency.
2017-05-30 10:26:53 -07:00
Jason Evans
4f0963b883
Add test for excessive retained memory.
2017-05-29 17:27:18 -07:00
Jason Evans
168793a1c1
Fix extent_grow_next management.
...
Fix management of extent_grow_next to serialize operations that may grow
retained memory. This assures that the sizes of the newly allocated
extents correspond to the size classes in the intended growth sequence.
Fix management of extent_grow_next to skip size classes if a request is
too large to be satisfied by the next size in the growth sequence. This
avoids the potential for an arbitrary number of requests to bypass
triggering extent_grow_next increases.
This resolves #858 .
2017-05-29 17:27:18 -07:00
Jason Evans
a16114866a
Fix OOM paths in extent_grow_retained().
2017-05-29 17:27:18 -07:00
Qi Wang
d5ef5ae934
Add opt.stats_print_opts.
...
The value is passed to atexit(3)-triggered malloc_stats_print() calls.
2017-05-29 11:54:00 -07:00
Qi Wang
49505e558b
Make test/unit/background_thread not flaky.
2017-05-26 21:15:15 -07:00
Qi Wang
b86d271cbf
Added opt_abort_conf: abort on invalid config options.
2017-05-26 21:14:28 -07:00
Jason Evans
57aaa53f2b
Fix run_tests to avoid percpu_arena on !Linux.
2017-05-26 16:17:01 -07:00
Qi Wang
927239b910
Cleanup smoothstep.sh / .h.
...
h_step_sum was used to compute moving sum. Not in use anymore.
2017-05-25 16:52:10 -07:00
Qi Wang
1df18d7c83
Fix stats.mapped during deallocation.
2017-05-24 15:57:46 -07:00
Jason Evans
67c93c332a
Refactor run_tests to increase parallelism.
...
Rather than relying on parallel make to build individual configurations
one at a time, use xargs to build multiple configurations in parallel.
This allows the configure scripts to run in parallel. On a 14-core
system (28 hyperthreads), this increases average CPU utilization from
~20% to ~90%.
2017-05-24 15:55:19 -07:00
David Goldblatt
18ecbfa89e
Header refactoring: unify and de-catchall mutex module
2017-05-24 15:27:30 -07:00
David Goldblatt
9f822a1fd7
Header refactoring: unify and de-catchall witness code.
2017-05-24 15:27:30 -07:00
Jason Evans
36195c8f4d
Disable percpu_arena by default.
2017-05-23 15:32:50 -07:00
Jason Evans
196a53c2ae
Do not assume dss never decreases.
...
An sbrk() caller outside jemalloc can decrease the dss, so add a
separate atomic boolean to explicitly track whether jemalloc is
concurrently calling sbrk(), rather than depending on state outside
jemalloc's full control.
This resolves #802 .
2017-05-23 15:31:29 -07:00
Jason Evans
067b970130
Add dss:primary testing.
...
Generalize the run_tests.sh and .travis.yml test generation to handle
combinations of arguments to the --with-malloc-conf configure option,
and merge "dss:primary" into the existing "tcache:false" testing.
2017-05-23 15:31:29 -07:00
Jason Evans
9b1038d19c
Do not hold the base mutex while calling extent hooks.
...
Drop the base mutex while allocating new base blocks, because extent
allocation can enter code that prohibits holding non-core mutexes, e.g.
the extent_[d]alloc() and extent_purge_forced_wrapper() calls in
extent_alloc_dss().
This partially resolves #802 .
2017-05-23 15:31:29 -07:00