Age | Commit message (Collapse) | Author |
|
This is not explored on Android properly and no one should use it until
proper scientific testing.
Moreover, THP is broken with all recent Qualcomm devices due to
speculative page faults.
Change-Id: I1c1e4f296c7895f5288cdb816f42340ea85826b4
Signed-off-by: Park Ju Hyung <qkrwngud825@gmail.com>
|
|
Change-Id: I3774ce46655d526e1aea2741711d96ec2613f977
|
|
Release
Change-Id: I269b861cb81499b78f13dc2e88827f13ef5a207d
|
|
|
|
The VirtualAlloc and VirtualFree APIs are different because MEM_DECOMMIT cannot
be used across multiple VirtualAlloc regions. To properly support decommit,
only allow merge / split within the same region -- this is done by tracking the
"is_head" state of extents and not merging cross-region.
Add a new state is_head (only relevant for retain && !maps_coalesce), which is
true for the first extent in each VirtualAlloc region. Determine if two extents
can be merged based on the head state, and use serial numbers for sanity checks.
|
|
Return a valid pointer instead of failed assertion.
|
|
If the confirm_conf option is set, when the program starts, each of
the four malloc_conf strings will be printed, and each option will
be printed when being set.
|
|
Added tests for large size classes and expanded the tests to
cover wider range of allocation sizes.
|
|
When config_stats is enabled track the size of bin->slabs_nonfull in
the new nonfull_slabs counter in bin_stats_t. This metric should be
useful for establishing an upper ceiling on the savings possible by
meshing.
|
|
|
|
As title.
|
|
Compiler optimizations may produce traces more than expected. Instead verify
the lower bound only.
|
|
The analytics tool is put under experimental.utilization namespace in
mallctl. Input is one pointer or an array of pointers and the output
is a list of memory utilization statistics.
|
|
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.
|
|
|
|
This does not add any android specific changes. Those will come in a
follow-up cl.
Test: Builds, and all unit tests pass on a hikey.
Change-Id: Ibac11b324afeac93a0c93d19689be48458d56f56
|
|
|
|
|
|
- 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.
|
|
|
|
|
|
|