summaryrefslogtreecommitdiffstats
path: root/test
Commit message (Collapse)AuthorAgeFilesLines
* Fix the binshard unit test.Qi Wang2019-04-021-0/+3
| | | | | The test attempts to trigger usage of multiple sharded bins, which percpu_arena makes it less reliable.
* Eagerly purge oversized merged extents.Qi Wang2019-03-151-3/+9
| | | | This change improves memory usage slightly, at virtually no CPU cost.
* Rename huge_threshold to oversize_threshold.Qi Wang2019-01-252-3/+3
| | | | | The keyword huge tend to remind people of huge pages which is not relevent to the feature.
* Explicitly use arena 0 in alignment and OOM tests.Qi Wang2019-01-241-3/+3
| | | | | This helps us avoid issues with size based routing (i.e. the huge_threshold feature).
* Un-experimental the huge_threshold feature.Qi Wang2019-01-162-2/+2
|
* Add unit test for producer-consumer pattern.Qi Wang2018-12-181-2/+50
|
* Add unit test for sharded bins.Qi Wang2018-12-042-0/+106
|
* Add stats for arenas.bin.i.nshards.Qi Wang2018-12-041-0/+1
|
* Deprecate OSSpinLock.Qi Wang2018-11-143-10/+1
|
* add test for zero-sized alloc and aligned allocDave Watson2018-10-172-1/+27
|
* Make `smallocx` symbol name depend on the `JEMALLOC_VERSION_GID`gnzlbg2018-10-171-21/+34
| | | | | | This comments concatenates the `JEMALLOC_VERSION_GID` to the `smallocx` symbol name, such that the symbol ends up exported as `smallocx_{git_hash}`.
* Hide smallocx even when enabled from the library APIgnzlbg2018-10-171-0/+7
| | | | | | | | | 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.
* Adapts mallocx integration tests for smallocxgnzlbg2018-10-172-0/+297
|
* Add hook microbenchmark.David Goldblatt2018-08-091-0/+73
|
* Add unit tests for loggingTyler Etzel2018-08-012-0/+151
|
* Small refactoring of emitterTyler Etzel2018-08-011-19/+75
| | | | | | | - 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
* SC: Remove global data.David Goldblatt2018-07-236-19/+19
| | | | | | | 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.
* SC: Make some key size classes static.David Goldblatt2018-07-135-10/+10
| | | | | | 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.
* Add MALLOC_CONF parsing for dynamic slab sizes.David T. Goldblatt2018-07-132-0/+84
| | | | This actually enables us to change the values.
* SC: Add page customization functionality.David T. Goldblatt2018-07-131-0/+33
|
* Add lg_ceil to bit_util.David Goldblatt2018-07-131-1/+55
| | | | Also, add the bit_util test back to the Makefile.
* Hide size class computation behind a layer of indirection.David Goldblatt2018-07-139-33/+41
| | | | | | | | | 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.
* Clean compilation -Wextragnzlbg2018-07-105-3/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 .
* Rename huge_threshold to experimental, and tweak documentation.Qi Wang2018-06-292-2/+2
|
* Add unit test for opt.huge_threshold.Qi Wang2018-06-291-0/+108
|
* Add ctl and stats for opt.huge_threshold.Qi Wang2018-06-291-0/+1
|
* Implement huge arena: opt.huge_threshold.Qi Wang2018-06-291-0/+3
| | | | | | | | | 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.
* Add test for remote deallocation.Qi Wang2018-06-271-0/+33
|
* Hooks: Protect against reentrancy.David Goldblatt2018-05-181-0/+42
| | | | | | | 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.
* Tests: Shouldn't be able to change global slowness.David Goldblatt2018-05-181-0/+17
| | | | | This can help ensure that we don't leave slowness changes behind in case of resource exhaustion.
* Hooks: Add a hook exhaustion test.David Goldblatt2018-05-181-1/+39
| | | | | When we run out of space in which to store hooks, we should return EAGAIN from the mallctl, but not otherwise misbehave.
* Mallctl: Add experimental.hooks.[install|remove].David Goldblatt2018-05-181-1/+39
|
* Hooks: move the "extra" pointer into the hook_t itself.David Goldblatt2018-05-181-22/+23
| | | | | This simplifies the mallctl call to install a hook, which should only take a single argument.
* Hooks: hook the realloc pathways that move/expand.David Goldblatt2018-05-181-1/+112
|
* Hooks: hook the realloc paths that act as pure malloc/free.David Goldblatt2018-05-181-2/+50
|
* Hooks: hook the pure-expand function.David Goldblatt2018-05-181-1/+31
|
* Hooks: hook the pure-deallocation functions.David Goldblatt2018-05-181-1/+49
|
* Hooks: hook the pure-allocation functions.David Goldblatt2018-05-181-2/+122
|
* Add "hook" module.David Goldblatt2018-05-181-0/+180
| | | | | | | | 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.
* Add the Seq module, a simple seqlock implementation.David Goldblatt2018-05-181-0/+95
| | | | | This allows fast reader-writer concurrency in cases where writers are rare. The immediate use case is for the hooking implementaiton.
* Rename hooks module to test_hooks.David Goldblatt2018-05-183-11/+11
| | | | | | "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".
* TSD: Add the ability to enter a global slow path.David Goldblatt2018-05-181-1/+129
| | | | | This gives any thread the ability to send other threads down slow paths the next time they fetch tsd.
* TSD: Make all state access happen through a function.David Goldblatt2018-05-181-2/+2
| | | | | Shortly, tsd state will be atomic and have some complicated enough logic down the state-setting path that we should be aware of it.
* Fix the max_background_thread test.Qi Wang2018-05-151-25/+27
| | | | | We may set number of background threads separately, e.g. through --with-malloc-conf, so avoid assuming the default number in the test.
* Fix background thread index issues with max_background_threads.Qi Wang2018-05-151-2/+2
|
* Mallctl: Add arenas.lookupLatchesar Ionkov2018-05-011-0/+17
| | | | | Implement a new mallctl operation that allows looking up the arena a region of memory belongs to.
* Allow setting extent hooks on uninitialized auto arenas.Qi Wang2018-04-121-0/+38
| | | | | Setting extent hooks can result in initializing an unused auto arena. This is useful to install extent hooks on auto arenas from the beginning.
* background_thread: add max thread count configDave Watson2018-04-101-2/+48
| | | | | 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.
* Fix const qualifier warnings.Qi Wang2018-04-092-2/+2
|
* Fix type warning on Windows.Qi Wang2018-04-091-1/+1
| | | | Add cast since read / write has unsigned return type on windows.