Go to file
Brennan Vincent ac17ea826e
cherry-pick from upstream jemalloc to fix profiling bug (#9)
This depends on tikv/jemalloc#2 , which is a cherry-pick of jemalloc/jemalloc#1604 .

See jemalloc/jemalloc#1605 for details of the bug that this fixes; basically, it makes profiling/sampling fail to work under some conditions. We hit this in practice at Materialize when attempting to switch to tikv/jemallocator.

Signed-off-by: Brennan Vincent <brennan@materialize.com>
2021-08-05 15:21:47 +08:00
.github/workflows ci: switch to GitHub actions (#10) 2021-08-05 01:08:14 +08:00
benches *: update project meta (#2) 2020-07-21 19:33:59 +08:00
ci ci: switch to GitHub actions (#10) 2021-08-05 01:08:14 +08:00
jemalloc-ctl ci: switch to GitHub actions (#10) 2021-08-05 01:08:14 +08:00
jemalloc-sys cherry-pick from upstream jemalloc to fix profiling bug (#9) 2021-08-05 15:21:47 +08:00
jemallocator-global *: extra cleanup (#3) 2020-07-22 15:39:21 +08:00
src ci: switch to GitHub actions (#10) 2021-08-05 01:08:14 +08:00
systest *: update project meta (#2) 2020-07-21 19:33:59 +08:00
tests *: update project meta (#2) 2020-07-21 19:33:59 +08:00
.gitignore Initial commit 2016-01-20 17:03:24 -08:00
.gitmodules jemalloc-sys: switch to 5.2.x (#4) 2020-11-16 17:26:07 +08:00
CHANGELOG.md *: bump 0.4.1 (#5) 2020-11-16 21:10:34 +08:00
Cargo.toml *: bump 0.4.1 (#5) 2020-11-16 21:10:34 +08:00
LICENSE-APACHE Fill out some more project metadata 2016-01-20 17:06:21 -08:00
LICENSE-MIT Fill out some more project metadata 2016-01-20 17:06:21 -08:00
README.md ci: switch to GitHub actions (#10) 2021-08-05 01:08:14 +08:00

README.md

tikv-jemallocator

ci Latest Version docs

This project is a simplified fork of jemallocator focus on server.

Links against jemalloc and provides a Jemalloc unit type that implements the allocator APIs and can be set as the #[global_allocator]

Overview

The jemalloc support ecosystem consists of the following crates:

  • tikv-jemalloc-sys: builds and links against jemalloc exposing raw C bindings to it.
  • tikv-jemallocator: provides the Jemalloc type which implements the GlobalAlloc and Alloc traits.
  • tikv-jemalloc-ctl: high-level wrapper over jemalloc's control and introspection APIs (the mallctl*() family of functions and the MALLCTL NAMESPACE)'

Documentation

To use tikv-jemallocator add it as a dependency:

# Cargo.toml
[dependencies]

[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = "0.4.0"

To set tikv_jemallocator::Jemalloc as the global allocator add this to your project:

# main.rs
#[cfg(not(target_env = "msvc"))]
use tikv_jemallocator::Jemalloc;

#[cfg(not(target_env = "msvc"))]
#[global_allocator]
static GLOBAL: Jemalloc = Jemalloc;

And that's it! Once you've defined this static then jemalloc will be used for all allocations requested by Rust code in the same program.

Platform support

The following table describes the supported platforms:

  • build: does the library compile for the target?
  • run: do tikv-jemallocator and tikv-jemalloc-sys tests pass on the target?
  • jemalloc: do tikv-jemalloc's tests pass on the target?

Tier 1 targets are tested on all Rust channels (stable, beta, and nightly). All other targets are only tested on Rust nightly.

Linux targets: build run jemalloc
aarch64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
x86_64-unknown-linux-gnu (tier 1)
MacOSX targets: build run jemalloc
x86_64-apple-darwin (tier 1)

Features

The tikv-jemallocator crate re-exports the features of the tikv-jemalloc-sys dependency.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in tikv-jemallocator by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.