| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
The test attempts to trigger usage of multiple sharded bins, which percpu_arena
makes it less reliable.
|
| |
|
|
| |
This change improves memory usage slightly, at virtually no CPU cost.
|
| |
|
|
|
| |
The keyword huge tend to remind people of huge pages which is not relevent to
the feature.
|
| |
|
|
|
| |
This helps us avoid issues with size based routing (i.e. the huge_threshold
feature).
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This comments concatenates the `JEMALLOC_VERSION_GID` to the
`smallocx` symbol name, such that the symbol ends up exported
as `smallocx_{git_hash}`.
|
| |
|
|
|
|
|
|
|
| |
The experimental `smallocx` API is not exposed via header files,
requiring the users to peek at `jemalloc`'s source code to manually
add the external declarations to their own programs.
This should reinforce that `smallocx` is experimental, and that `jemalloc`
does not offer any kind of backwards compatiblity or ABI gurantees for it.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
- Make API more clear for using as standalone json emitter
- Support cases that weren't possible before, e.g.
- emitting primitive values in an array
- emitting nested arrays
|
| |
|
|
|
|
|
| |
The global data is mostly only used at initialization, or for easy access to
values we could compute statically. Instead of consuming that space (and
risking TLB misses), we can just pass around a pointer to stack data during
bootstrapping.
|
| |
|
|
|
|
| |
The largest small class, smallest large class, and largest large class may all
be needed down fast paths; to avoid the risk of touching another cache line, we
can make them available as constants.
|
| |
|
|
| |
This actually enables us to change the values.
|
| | |
|
| |
|
|
| |
Also, add the bit_util test back to the Makefile.
|
| |
|
|
|
|
|
|
|
| |
This class removes almost all the dependencies on size_classes.h, accessing the
data there only via the new module sc.h, which does not depend on any
configuration options.
In a subsequent commit, we'll remove the configure-time size class computations,
doing them at boot time, instead.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this commit jemalloc produced many warnings when compiled with -Wextra
with both Clang and GCC. This commit fixes the issues raised by these warnings
or suppresses them if they were spurious at least for the Clang and GCC
versions covered by CI.
This commit:
* adds `JEMALLOC_DIAGNOSTIC` macros: `JEMALLOC_DIAGNOSTIC_{PUSH,POP}` are
used to modify the stack of enabled diagnostics. The
`JEMALLOC_DIAGNOSTIC_IGNORE_...` macros are used to ignore a concrete
diagnostic.
* adds `JEMALLOC_FALLTHROUGH` macro to explicitly state that falling
through `case` labels in a `switch` statement is intended
* Removes all UNUSED annotations on function parameters. The warning
-Wunused-parameter is now disabled globally in
`jemalloc_internal_macros.h` for all translation units that include
that header. It is never re-enabled since that header cannot be
included by users.
* locally suppresses some -Wextra diagnostics:
* `-Wmissing-field-initializer` is buggy in older Clang and GCC versions,
where it does not understanding that, in C, `= {0}` is a common C idiom
to initialize a struct to zero
* `-Wtype-bounds` is suppressed in a particular situation where a generic
macro, used in multiple different places, compares an unsigned integer for
smaller than zero, which is always true.
* `-Walloc-larger-than-size=` diagnostics warn when an allocation function is
called with a size that is too large (out-of-range). These are suppressed in
the parts of the tests where `jemalloc` explicitly does this to test that the
allocation functions fail properly.
* adds a new CI build bot that runs the log unit test on CI.
Closes #1196 .
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
This can help ensure that we don't leave slowness changes behind in case of
resource exhaustion.
|
| |
|
|
|
| |
When we run out of space in which to store hooks, we should return EAGAIN from
the mallctl, but not otherwise misbehave.
|
| | |
|
| |
|
|
|
| |
This simplifies the mallctl call to install a hook, which should only take a
single argument.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
This allows fast reader-writer concurrency in cases where writers are rare. The
immediate use case is for the hooking implementaiton.
|
| |
|
|
|
|
| |
"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".
|
| |
|
|
|
| |
This gives any thread the ability to send other threads down slow paths the next
time they fetch tsd.
|
| |
|
|
|
| |
Shortly, tsd state will be atomic and have some complicated enough logic down
the state-setting path that we should be aware of it.
|
| |
|
|
|
| |
We may set number of background threads separately, e.g. through
--with-malloc-conf, so avoid assuming the default number in the test.
|
| | |
|
| |
|
|
|
| |
Implement a new mallctl operation that allows looking up the arena a
region of memory belongs to.
|
| |
|
|
|
| |
Setting extent hooks can result in initializing an unused auto arena. This is
useful to install extent hooks on auto arenas from the beginning.
|
| |
|
|
|
| |
Looking at the thread counts in our services, jemalloc's background thread
is useful, but mostly idle. Add a config option to tune down the number of threads.
|
| | |
|
| |
|
|
| |
Add cast since read / write has unsigned return type on windows.
|