Guangli Dai
ba19d2cb78
Add arena-level name.
...
An arena-level name can help identify manual arenas.
2022-09-16 15:04:59 -07:00
Guangli Dai
a0734fd6ee
Making jemalloc max stack depth a runtime option
2022-09-12 13:56:22 -07:00
Ivan Zaitsev
36366f3c4c
Add double free detection in thread cache for debug build
...
Add new runtime option `debug_double_free_max_scan` that specifies the max
number of stack entries to scan in the cache bit when trying to detect the
double free bug (currently debug build only).
2022-08-04 16:58:22 -07:00
yunxu
b798fabdf7
Add prof_leak_error option
...
The option makes the process to exit with error code 1 if a memory leak
is detected. This is useful for implementing automated tools that rely
on leak detection.
2022-01-21 16:24:20 -08:00
Qi Wang
e491cef9ab
Add stats for stashed bytes in tcache.
2021-12-29 14:44:43 -08:00
Qi Wang
d038160f3b
Fix shadowed variable usage.
...
Verified with EXTRA_CFLAGS=-Wshadow.
2021-12-23 10:55:08 -08:00
Alex Lapenkou
6e848a005e
Remove opt_background_thread_hpa_interval_max_ms
...
Now that HPA can communicate the time until its deferred work should be done,
this option is not used anymore.
2021-09-17 16:56:41 -07:00
Alex Lapenkou
97da57c13a
HPA: Add min_purge_interval_ms option
...
This rate limiting option is required to avoid purging too often.
2021-09-17 16:56:41 -07:00
David Goldblatt
6f41ba55ee
Mutex: Make spin count configurable.
...
Don't document it since we don't want to support this as a "real" setting, but
it's handy for testing.
2021-08-05 10:13:53 -07:00
David Goldblatt
6630c59896
HPA: Hugification hysteresis.
...
We wait a while after deciding a huge extent should get hugified to see if it
gets purged before long. This avoids hugifying extents that might shortly get
dehugified for purging.
Rename and use the hpa_dehugification_threshold option support code for this,
since it's now ignored.
2021-07-12 17:59:18 -07:00
David Goldblatt
1d4a7666d5
HPA: Do deferred operations on background threads.
2021-07-12 17:59:18 -07:00
David Goldblatt
4452a4812f
Add opt.experimental_infallible_new.
...
This allows a guarantee that operator new never throws.
Fix the .gitignore rules to include test/integration/cpp while we're here.
2021-06-24 12:22:51 -07:00
David Goldblatt
0689448b1e
Travis: Unbreak the builds.
...
In the hopes of future-proofing as much as possible, jump to the latest
distribution Travis supports.
2021-06-24 07:40:28 -07:00
David Goldblatt
1f688490e1
Stats: Fix a printing bug when hpa_dirty_mult = -1
...
Missed a layer of indirection.
2021-05-05 19:45:25 -07:00
David Goldblatt
fb327368db
SEC: Expand option configurability.
...
This change pulls the SEC options into a struct, which simplifies their handling
across various modules (e.g. PA needs to forward on SEC options from the
malloc_conf string, but it doesn't really need to know their names). While
we're here, make some of the fixed constants configurable, and unify naming from
the configuration options to the internals.
2021-02-19 15:10:54 -08:00
Qi Wang
a11be50332
Implement opt.cache_oblivious.
...
Keep config.cache_oblivious for now to remain backward-compatible.
2021-02-11 11:32:01 -08:00
Jordan Rome
8c5e5f50a2
Fix stats for "tcache_max" (was "lg_tcache_max")
...
This opt was changed here: c8209150f9
and looks like this got missed.
Also update the write type to be unsigned.
2021-02-10 23:01:46 -08:00
David Goldblatt
79f81a3732
HPA: Make dirty_mult configurable.
2021-02-04 20:58:31 -08:00
David Goldblatt
32dd153796
HPA: Make dehugification threshold configurable.
2021-02-04 20:58:31 -08:00
David Goldblatt
4790db15ed
HPA: make the hugification threshold configurable.
2021-02-04 20:58:31 -08:00
David Goldblatt
0ea3d6307c
CTL, Stats: report HPA empty slab stats.
2021-02-04 20:58:31 -08:00
David Goldblatt
bf64557ed6
Move empty slab tracking to the psset.
...
We're moving towards a world in which purging decisions are less rigidly
enforced at a single-hugepage level. In that world, it makes sense to keep
around some hpdatas which are not completely purged, in which case we'll need to
track them.
2021-02-04 20:58:31 -08:00
David Goldblatt
061cabb712
HPA stats: report retained instead of inactive.
...
This more closely maps to the PAC.
2021-02-04 20:58:31 -08:00
David Goldblatt
d3e5ea03c5
HPA: Track dirty stats.
2021-02-04 20:58:31 -08:00
David Goldblatt
be0d7a53f3
HPA: Don't track inactive pages.
...
This is really only useful for human consumption. Correspondingly, emit it only
in the human-readable stats, and let everybody else compute from the hugepage
size and nactive.
2021-02-04 20:58:31 -08:00
David Goldblatt
b25ee5d88e
HPA: Add purge stats.
2021-02-04 20:58:31 -08:00
Yinan Zhang
9f71b5779b
Output prof stats in stats print
2021-01-07 20:39:49 -08:00
Yinan Zhang
1f1a0231ed
Split macros for initializing stats headers
2021-01-07 20:39:49 -08:00
David Goldblatt
a9fa2defdb
Add JEMALLOC_COLD, and mark some functions cold.
...
This hints to the compiler that it should care more about space than CPU (among
other things). In cases where the compiler lacks profile-guided information,
this can be a substantial space savings.
For now, we mark the mallctl or atexit driven profiling and stats functions that
take up the most space.
2021-01-04 14:55:49 -08:00
Yinan Zhang
22d62d8cbd
Handle ending gap properly for HPA stats
2020-12-18 16:40:57 -08:00
Yinan Zhang
6c5a3a24dd
Omit bin stats rows with no data
2020-12-18 16:40:57 -08:00
Yinan Zhang
74bd63b203
Optimize stats print using partial name-to-mib
2020-12-18 10:39:58 -08:00
David Goldblatt
1e3b8636ff
HPA: Remove unused malloc_conf options.
2020-12-08 12:10:48 -08:00
David Goldblatt
3ed0b4e8a3
HPA: Add an nevictions counter.
...
I.e. the number of times we've purged a hugepage-sized region.
2020-12-07 06:21:08 -08:00
David Goldblatt
43af63fff4
HPA: Manage whole hugepages at a time.
...
This redesigns the HPA implementation to allow us to manage hugepages all at
once, locally, without relying on a global fallback.
2020-12-07 06:21:08 -08:00
David Goldblatt
6599651aee
PA: Use an SEC in fron of the HPA shard.
2020-10-23 11:14:34 -07:00
David Goldblatt
1964b08394
HPA: Add stats for the hpa_shard.
2020-10-23 11:14:34 -07:00
David Goldblatt
534504d4a7
HPA: add size-exclusion functionality.
...
I.e. only allowing allocations under or over certain sizes.
2020-10-23 11:14:34 -07:00
David Goldblatt
bf025d2ec8
HPA: Make slab sizes and maxes configurable.
...
This allows easy experimentation with them as tuning parameters.
2020-10-23 11:14:34 -07:00
David Goldblatt
1c7da33317
HPA: Tie components into a PAI implementation.
2020-10-23 11:14:34 -07:00
Yinan Zhang
a795b19327
Remove beginning define in source files
...
```
sed -i "/^#define JEMALLOC_[A-Z_]*_C_$/d" src/*.c;
```
2020-06-19 12:15:44 -07:00
David Goldblatt
6cdac3c573
Tcache: Make flush fractions configurable.
2020-05-16 13:34:23 -07:00
David Goldblatt
7503b5b33a
Stats, CTL: Expose new tcache settings.
2020-05-16 13:34:23 -07:00
Yinan Zhang
b06dfb9ccc
Push event handlers to constituent modules
2020-05-12 09:16:16 -07:00
Yinan Zhang
abd4674931
Extract out per event postponed wait time fetching
2020-05-12 09:16:16 -07:00
Yinan Zhang
733ae918f0
Extract out per event new wait time fetching
2020-05-12 09:16:16 -07:00
Yinan Zhang
f533ab6da6
Add forking handling for stats
2020-05-11 15:35:06 -07:00
Yinan Zhang
2097e1945b
Unify write callback signature
2020-05-11 14:51:24 -07:00
Qi Wang
88b0e03a4e
Implement opt.stats_interval and the _opts options.
...
Add options stats_interval and stats_interval_opts to allow interval based stats
printing. This provides an easy way to collect stats without code changes,
because opt.stats_print may not work (some binaries never exit).
2020-01-29 09:57:55 -08:00
David T. Goldblatt
de81a4eada
Add stats counters for number of zero reallocs
2019-10-29 17:48:44 -07:00