Qi Wang
7160617107
Add branch hints to free_fastpath.
...
Explicityly mark the non-slab case unlikely. Previously there were jumps in the
common case.
2019-11-16 13:41:13 -08:00
Qi Wang
a787d2f5b3
Prefer getaffinity() to detect number of CPUs.
2019-11-15 16:24:38 -08:00
Qi Wang
04cb7d4d6b
Bail out early for muzzy decay.
...
This avoids taking the muzzy decay mutex with the default setting.
2019-11-15 16:24:15 -08:00
Yinan Zhang
73510dfd15
Revert "Fix bug in prof_realloc"
...
This reverts commit 3b5eecf102
.
2019-11-15 15:13:39 -08:00
Yinan Zhang
3b5eecf102
Fix bug in prof_realloc
...
We should pass in `old_ptr` rather than the new `ptr` to
`prof_free_sampled_object()` when `old_ptr` points to a sampled
allocation.
2019-11-15 13:28:33 -08:00
Qi Wang
e4c36a6f30
Emphasize no modification through thread.allocatedp allowed.
2019-11-13 09:12:08 -08:00
Leonardo Santagada
c462753cc8
Use __forceinline for JEMALLOC_ALWAYS_INLINE on msvc
2019-11-12 13:50:25 -08:00
Qi Wang
836d7a7e69
Check for large size first in the uncommon case of malloc.
...
Larger sizes are not that uncommon comparing to !tsd_fast.
2019-11-11 13:30:20 -08:00
Qi Wang
9c59abe42a
Fix a typo in Makefile.
2019-11-11 12:17:08 -08:00
Qi Wang
da50d8ce87
Refactor and optimize prof sampling initialization.
...
Makes the prof sample prng use the tsd prng_state. This allows us to properly
initialize the sample interval event, without having to create tdata. As a
result, tdata will be created on demand (when a thread reaches the sample
interval bytes allocated), instead of on the first allocation.
2019-11-11 10:35:37 -08:00
Qi Wang
bc774a3519
Rename tsd->offset_state to tsd->prng_state.
2019-11-11 10:35:37 -08:00
Qi Wang
19a51abf33
Avoid arena->offset_state when tsd not available for prng.
...
Use stack locals and remove the offset_state in arena.
2019-11-11 10:35:37 -08:00
Nick Desaulniers
d01b425e5d
Add -Wimplicit-fallthrough checks if supported
...
Clang since r369414 (clang-10) can now check -Wimplicit-fallthrough for
C code, and use the GNU C style attribute to denote fallthrough.
Move the test from header only to autoconf. The previous test used
brittle version detection which did not work for newer clang that
supported this feature.
The attribute has to be its own statement, hence the added `;`. It also
can only precede case statements, so the final cases should be
explicitly terminated with break statements.
Fixes commit 3d29d11ac2
("Clean compilation -Wextra")
Link: 1e0affb6e5
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
2019-11-08 13:03:03 -08:00
Yinan Zhang
a8b578d538
Remove mallctl test for zero_realloc
2019-11-05 10:09:18 -08:00
Yinan Zhang
43f0ce92d8
Define general purpose tsd_thread_event_init()
2019-11-04 16:07:56 -08:00
Yinan Zhang
97f93fa0f2
Pull tcache GC events into thread event handler
2019-11-04 16:07:56 -08:00
Yinan Zhang
198f02e797
Pull prof_accumbytes into thread event handler
2019-11-04 15:21:16 -08:00
Yinan Zhang
152c0ef954
Build a general purpose thread event handler
2019-11-04 11:15:50 -08:00
RingsC
6924f83cb2
use SYS_openat when available
...
some architecture like AArch64 may not have the open syscall, but have
openat syscall. so check and use SYS_openat if SYS_openat available if
SYS_open is not supported at init_thp_state.
2019-11-01 13:06:40 -07:00
David T. Goldblatt
de81a4eada
Add stats counters for number of zero reallocs
2019-10-29 17:48:44 -07:00
David T. Goldblatt
9cfa805947
Realloc: Make behavior of realloc(ptr, 0) configurable.
2019-10-29 17:48:44 -07:00
David T. Goldblatt
ee961c2310
Merge realloc and rallocx pathways.
2019-10-29 17:48:44 -07:00
Yinan Zhang
bd6e28d6a3
Guard slabcur fetching in extent_util
2019-10-28 17:27:51 -07:00
Yinan Zhang
4786099a3a
Increase column width for global malloc/free rate
2019-10-24 14:54:51 -07:00
Yinan Zhang
05681e387a
Optimize cache_bin_alloc_easy for malloc fast path
...
`tcache_bin_info` is not accessed on malloc fast path but the
compiler reserves a register for it, as well as an additional
register for `tcache_bin_info[ind].stack_size`. The optimization
gets rid of the need for the two registers.
2019-10-21 16:43:45 -07:00
Yinan Zhang
4fe50bc7d0
Fix amd64 MSVC warning
2019-10-18 10:16:29 -07:00
Yinan Zhang
4fbbc817c1
Simplify time setting and getting for prof log
2019-10-16 09:24:52 -07:00
Qi Wang
4094b7c03f
Limit # of iters of test_bitmap_xfu.
...
Otherwise the test is too slow for higher page sizes such as 64k.
2019-10-09 11:15:37 -07:00
Yinan Zhang
66e07f986d
Suppress tdata creation in reentrancy
...
This change suppresses tdata initialization and prof sample threshold
update in interrupting malloc calls. Interrupting calls have no need
for tdata. Delaying tdata creation aligns better with our lazy tdata
creation principle, and it also helps us gain control back from
interrupting calls more quickly and reduces any risk of delegating
tdata creation to an interrupting call.
2019-10-04 08:52:50 -07:00
Yinan Zhang
beb7c16e94
Guard prof_active reset by opt_prof
...
Set `prof_active` to read-only when `opt_prof` is turned off.
2019-10-02 11:42:53 -07:00
Gareth Lloyd
1df9dd3515
Fix je_ prefix issue in test
2019-09-24 11:24:57 -07:00
David T. Goldblatt
3d84bd57f4
Arena: Add helper function arena_get_from_extent.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
c97d255752
Eset: Remove temporary declaration.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
ce5b128f10
Remove the undefined extent_size_quantize declarations.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
821dd53a1d
Extent -> Eset: Rename arena members.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
e144b21e4b
Extent -> Eset: Move fork handling.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
77bbb35a92
Extent -> Eset: Move extent fit functions.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
1210af9a4e
Extent -> Eset: Move insertion and removal.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
a42861540e
Extents -> Eset: Convert some stats getters.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
820f070c6b
Move page quantization to sz module.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
63d1b7a7a7
Extents -> Eset: move extents_state_get.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
b416b96a39
Extents -> Eset: rename/move extents_init.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
e6180fe1b4
Eset: Add a source file.
...
This will let us move extents_* functions over one by one.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
4e5e43f22e
Rename extents_t -> eset_t.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
723ccc6c27
Extents: Split out extent struct.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
41187bdfb0
Extents: Break extent-struct/arena interactions
...
Specifically, the extent_arena_[g|s]et functions and the address randomization.
These are the only things that tie the extent struct itself to the arena code.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
529cfe2abc
Arena: rename arena_structs_b.h -> arena_structs.h
...
arena_structs_a.h was removed in the previous commit.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
e7cf84a8dd
Rearrange slab data and constants
...
The constants logically belong in the sc module. The slab data bitmap isn't
really scoped to an arena; move it to its own module.
2019-09-23 23:06:27 -07:00
Qi Wang
d1be488cd8
Add --with-lg-page=16 to CI.
2019-09-22 18:51:03 -07:00
Qi Wang
ac5185f73e
Fix tcache bin stack alignment.
...
Set the proper alignment when allocating space for the tcache bin stack.
2019-09-13 12:32:29 -07:00