| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Bug: 131864803
Test: New bionic unit test to make sure that mallinfo and malloc_info match.
Change-Id: Id2fd0c38106fa0150ff6baae538ecaea356296ec
|
|
|
|
|
|
|
|
|
|
|
|
| |
Removing the stats make the whole cache structure fit in a single page.
Bug: 131362671
Test: Verified that all bionic malloc benchmarks are still the same.
Test: It turns out that the malloc_sql benchmarks seem to get faster.
Test: Verified that after this change, it saves about 2K PSS per thread.
Change-Id: I4dcd633543f05f1a9d47db175f9977ddb42188a9
(cherry picked from commit a8b52518654725e64def5ebbd0ed472100e5a522)
|
|
|
|
|
|
|
|
|
| |
Bug: 124264835
Test: Ran bionic unit tests.
Test: Ran dumpsys -t 6000 meminfo --unreachable of chrome process without
Test: crashing.
Change-Id: I2cc66e443fa278621b9878a888c74f38efcb79eb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A jemalloc user reported that the best fit selection is causing them
a memory leak. This code has been completely removed from the next
release of jemalloc (5.2.0), so remove it since it doesn't have any
real benefit.
See https://github.com/jemalloc/jemalloc/issues/1454
Running the memory dumps, removing best fit appears to be a win: it is
slightly faster and has the same PSS/VA.
Bug: 128697497
Test: Ran jemalloc unit tests.
Test: Ran memory dumps in 32 bit and 64 bit and observed that the PSS
Test: and VA stayed the same, while run time improved slightly.
Change-Id: I98a8ddf2cea837c8ade1afd4a998960c253d3932
|
|
|
|
|
|
|
|
| |
Bug: 120032857
Test: Passes unit tests.
Test: Ran dumpsys -t 300 meminfo --unreachable -a without crashes.
Change-Id: I3d784ed2b449970966403bed7d701e2ff7434fba
|
|
|
|
|
|
|
|
|
|
| |
The lstats part of the arena structure was not being countered at all,
so added that counting for mallinfo.
Bug: 119580449
Test: New unit tests pass, without changes, the test fails.
Change-Id: I97b231f9189a79f0ce0f55fe6c4cc00266ca75ac
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for svelte.
Add je_iterate support.
Update some of the internals so that bad pointers in je_iterate do not
crash.
Test: Ran new bionic unit tests, ran libmemunreachable tests, booted system.
Change-Id: I04171cf88df16d8dc2c2ebb60327e58b915b9d83
|
|
|
|
|
|
|
|
|
| |
Bug: 62621531
Bug: 110158834
Test: Ran unit tests and benchmarks using libc.
Change-Id: Ie13ab8510c42f96b58496b0ab7e4f8c3a9cd2c6d
|
|
|
|
|
| |
Implement a new mallctl operation that allows looking up the arena a
region of memory belongs to.
|
|
|
|
|
| |
Background threads are created without holding the global background_thread
lock, which mean paused state is possible (and fine).
|
|
|
|
|
| |
If no lazy lock or background thread is enabled, avoid dlsym pthread_create on
boot.
|
|
|
|
|
|
| |
Previously, we would leak the extent and memory associated with a salvageable
portion of an extent that we were trying to split in three, in the case where
the first split attempt succeeded and the second failed.
|
|
|
|
|
| |
When abort_conf is set, make sure we always error out at the end of the options
processing loop.
|
| |
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
preserve_lru feature adds lots of complication, for little value.
Removing it means merged extents are re-added to the lru list, and may
take longer to madvise away than they otherwise would.
Canaries after removal seem flat for several services (no change).
|
|
|
|
|
| |
1) make sure background thread 0 is always created; and 2) fix synchronization
between thread 0 and the control thread.
|
| |
|
| |
|
|
|
|
| |
This completes the conversion; we now have only structured text output.
|
| |
|
|
|
|
|
| |
This was left over from a previous emitter conversion. It didn't affect the
correctness of the output.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Another step in the conversion process. The mutex is a little different,
because we we want to emit it as an array.
|
|
|
|
|
| |
This makes the emitter the only source of callback information, which is a step
towards where we want to be.
|
|
|
|
|
| |
This makes it so that the "general" portion of the stats code is completely
agnostic to emitter type.
|
|
|
|
| |
While we're at it, print them in table form, too.
|
| |
|
|
|
|
| |
This is a step along the path towards using the emitter for all stats output.
|
| |
|
|
|
|
|
|
|
|
| |
"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.
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
This eliminates the need to generate an enormous switch statement in
arena_slab_regind.
|
| |
|