Qi Wang
21eb0d15a6
Fix a background_thread shutdown issue.
...
1) make sure background thread 0 is always created; and 2) fix synchronization
between thread 0 and the control thread.
2018-04-02 10:03:47 -07:00
Qi Wang
956c4ad6b5
Change mutable option output in stats to avoid stringify issues.
2018-03-15 14:42:48 -07:00
Qi Wang
baffeb1d0a
Fix a typo in stats.
2018-03-15 14:42:48 -07:00
Qi Wang
742416f645
Revert "CI: Remove "catgets" dependency on appveyor."
...
This reverts commit ae0f5d5c3f
.
2018-03-15 13:58:42 -07:00
David Goldblatt
4c36cd2cc5
Stats printing: Convert arena large stats to use emitter.
...
This completes the conversion; we now have only structured text output.
2018-03-09 11:47:17 -08:00
David Goldblatt
4eed989bbf
Stats printing: convert arena bin stats to use emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
a9f3cedc6e
Stats printing: remove a spurious newline.
...
This was left over from a previous emitter conversion. It didn't affect the
correctness of the output.
2018-03-09 11:47:17 -08:00
David Goldblatt
a1738f4efd
Stats printing: Make arena mutex stats use the emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
07fb707623
Stats printing: convert most per-arena stats to use the emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
8fc850695d
Stats printing: convert paging and alloc counts to use the emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
bc6620f73e
Stats printing: convert decay stats to use the emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
a6ef061c43
Stats printing: Move emitter cutoff point into stats_arena_print.
2018-03-09 11:47:17 -08:00
David Goldblatt
cbde666d9a
Stats printing: move stats_print_helper to use emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
86c61d4a57
Stats printing: Move global mutex stats to use emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
ebe0b5f828
Emitter: Add support for row-based output in table mode.
...
This is needed for things like mutex stats in table mode.
2018-03-09 11:47:17 -08:00
David Goldblatt
9e1846b004
Stats printing: move non-mutex arena stats to the emitter.
...
Another step in the conversion process. The mutex is a little different,
because we we want to emit it as an array.
2018-03-09 11:47:17 -08:00
David Goldblatt
8076b28721
Stats printing: Remove explicit callback passing to stats_print_helper.
...
This makes the emitter the only source of callback information, which is a step
towards where we want to be.
2018-03-09 11:47:17 -08:00
David Goldblatt
0d20eda127
Stats printing: Move emitter -> manual cutoff point.
...
This makes it so that the "general" portion of the stats code is completely
agnostic to emitter type.
2018-03-09 11:47:17 -08:00
David Goldblatt
ec31d476ff
Stats printing: Convert profiling stats to use the emitter.
...
While we're at it, print them in table form, too.
2018-03-09 11:47:17 -08:00
David Goldblatt
e5acc35400
Stats printing: Convert general arena stats to use the emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
4a335e0c6f
Stats printing: convert config and opt output to use emitter.
...
This is a step along the path towards using the emitter for all stats output.
2018-03-09 11:47:17 -08:00
David Goldblatt
b646f89173
Stats printing: Convert header and footer to use emitter.
2018-03-09 11:47:17 -08:00
David Goldblatt
27a8fe6780
Introduce the emitter module.
...
The emitter can be used to produce structured json or tabular output. For now
it has no uses; in subsequent commits, I'll begin transitioning stats printing
code over.
2018-03-09 11:47:17 -08:00
Qi Wang
e4f090e8df
Add opt.thp which allows explicit hugepage usage.
...
"always" marks all user mappings as MADV_HUGEPAGE; while "never" marks all
mappings as MADV_NOHUGEPAGE. The default setting "default" does not change any
settings. Note that all the madvise calls are part of the default extent hooks
by design, so that customized extent hooks have complete control over the
mappings including hugepage settings.
2018-03-08 13:08:06 -08:00
Qi Wang
efa40532dc
Remove config.thp which wasn't in use.
2018-03-08 13:08:06 -08:00
Qi Wang
6b35366ef5
Skip test_alignment_and_size if percpu_arena is enabled.
...
test_alignment_and_size needs a lot of memory. When percpu_arena is enabled,
multiple arenas may cause the test to OOM.
2018-03-02 14:44:21 -08:00
Qi Wang
548153e789
Remove unused code in test/thread_tcache_enabled.
2018-03-02 14:44:21 -08:00
David Goldblatt
26b1c13982
Background threads: fix an indexing bug.
...
We have a buffer overrun that manifests in the case where arena indices higher
than the number of CPUs are accessed before arena indices lower than the number
of CPUs. This fixes the bug and adds a test.
2018-02-27 19:43:05 -08:00
David T. Goldblatt
dd7e283b6f
Tweak the ticker paths to help GCC generate better code.
...
GCC on its own isn't quite able to turn the ticker subtract into a memory
operation followed by a js.
2018-02-21 16:04:23 -08:00
David Goldblatt
ae0f5d5c3f
CI: Remove "catgets" dependency on appveyor.
...
This seems to cause a configuration error with msys2.
2018-02-14 16:21:44 -08:00
Maks Naumov
a3abbb4bdf
Fix MSVC build
2018-02-12 10:35:53 -08:00
rustyx
83aa9880b7
Make generated headers usable in both x86 and x64 mode in Visual Studio
2018-01-30 13:11:41 -08:00
rustyx
ed52d24f74
Define JEMALLOC_NO_PRIVATE_NAMESPACE also in Visual Studio x86 targets
2018-01-30 13:11:41 -08:00
Christopher Ferris
f78d4ca3fb
Modify configure to determine return value of strerror_r.
...
On glibc and Android's bionic, strerror_r returns char* when
_GNU_SOURCE is defined.
Add a configure check for this rather than assume glibc is the
only libc that behaves this way.
2018-01-10 21:01:18 -08:00
Qi Wang
ba5992fe9a
Improve the fit for aligned allocation.
...
We compute the max size required to satisfy an alignment. However this can be
quite pessimistic, especially with frequent reuse (and combined with state-based
fragmentation). This commit adds one more fit step specific to aligned
allocations, searching in all potential fit size classes.
2018-01-05 14:27:58 -08:00
Qi Wang
41790f4fa4
Check tsdn_null before reading reentrancy level.
2018-01-05 13:05:17 -08:00
Qi Wang
91b247d311
In iallocztm, check lock rank only when not in reentrancy.
2018-01-05 13:05:17 -08:00
Nehal J Wani
78a87e4a80
Make sure JE_CXXFLAGS_ADD uses CPP compiler
...
All the invocations of AC_COMPILE_IFELSE inside JE_CXXFLAGS_ADD were
running 'the compiler and compilation flags of the current language'
which was always the C compiler and the CXXFLAGS were never being tested
against a C++ compiler. This patch fixes this issue by temporarily
changing the chosen compiler to C++ by pushing it over the stack and
popping it immediately after the compilation check.
2018-01-04 11:14:46 -08:00
marxin
433c2edabc
Disable JEMALLOC_HAVE_MADVISE_HUGE for arm* CPUs.
2018-01-04 11:13:32 -08:00
Rajeev Misra
72bdbc35e3
extent_t bitpacking logic refactoring
2018-01-04 11:11:04 -08:00
Rajeev Misra
f47e39d11a
handle 32 bit mutex counters
2018-01-04 11:08:17 -08:00
David Goldblatt
d41b19f9c7
Implement arena regind computation using div_info_t.
...
This eliminates the need to generate an enormous switch statement in
arena_slab_regind.
2017-12-21 14:25:43 -08:00
David Goldblatt
21f7c13d0b
Add the div module, which allows fast division by dynamic values.
2017-12-21 14:25:43 -08:00
David T. Goldblatt
7f1b02e3fa
Split up and standardize naming of stats code.
...
The arena-associated stats are now all prefixed with arena_stats_, and live in
their own file. Likewise, malloc_bin_stats_t -> bin_stats_t, also in its own
file.
2017-12-18 16:29:10 -08:00
David T. Goldblatt
901d94a2b0
Rename cache_alloc_easy to cache_bin_alloc_easy.
...
This lives in the cache_bin module; just a typo.
2017-12-18 16:29:10 -08:00
David T. Goldblatt
8aafa270fd
Move bin stats code from arena to bin module.
2017-12-18 16:29:10 -08:00
David T. Goldblatt
48bb4a056b
Move bin forking code from arena to bin module.
2017-12-18 16:29:10 -08:00
David T. Goldblatt
a8dd8876fb
Move bin initialization from arena module to bin module.
2017-12-18 16:29:10 -08:00
David T. Goldblatt
4bf4a1c4ea
Pull out arena_bin_info_t and arena_bin_t into their own file.
...
In the process, kill arena_bin_index, which is unused. To follow are several
diffs continuing this separation.
2017-12-18 16:29:10 -08:00
Qi Wang
740bdd68b1
Over purge by 1 extent always.
...
When purging, large allocations are usually the ones that cross the npages_limit
threshold, simply because they are "large". This means we often leave the large
extent around for a while, which has the downsides of: 1) high RSS and 2) more
chance of them getting fragmented. Given that they are not likely to be reused
very soon (LRU), let's over purge by 1 extent (which is often large and not
reused frequently).
2017-12-18 12:57:07 -08:00