Jemalloc tuning via Cargo config

This commit is contained in:
Michael Sproul
2022-03-07 18:47:05 +11:00
parent f93dfd0c28
commit e48ab54dcc
4 changed files with 21 additions and 3 deletions

4
.cargo/config.toml Normal file
View File

@@ -0,0 +1,4 @@
[env]
# Set the number of arenas to 16 when using jemalloc.
JEMALLOC_SYS_WITH_MALLOC_CONF = "abort_conf:true,narenas:16"

View File

@@ -11,8 +11,11 @@ lighthouse_metrics = { path = "../lighthouse_metrics" }
lazy_static = "1.4.0"
libc = "0.2.79"
parking_lot = "0.11.0"
jemallocator = { version = "0.3.0", optional = true }
jemallocator = { version = "0.3.0", optional = true, features = ["background_threads"] }
jemalloc-sys = { version = "0.3.0", optional = true }
[features]
mallinfo2 = []
jemalloc = ["jemallocator"]
jemalloc = ["jemallocator", "jemalloc-sys"]
jemalloc-stats = ["jemallocator/stats"]
jemalloc-profiling = ["jemallocator/profiling"]

View File

@@ -1,2 +1,12 @@
//! Set the allocator to `jemalloc`.
//!
//! Due to `jemalloc` requiring configuration at compile time or immediately upon runtime
//! initialisation it is configured via a Cargo config file in `.cargo/config.toml`.
//!
//! The `jemalloc` tuning can be overriden by:
//!
//! A) `JEMALLOC_SYS_WITH_MALLOC_CONF` at compile-time.
//! B) `_RJEM_MALLOC_CONF` at runtime.
#[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;

View File

@@ -6,6 +6,7 @@ edition = "2021"
autotests = false
[features]
default = ["tree-states"]
# Writes debugging .ssz files to /tmp during block processing.
write_ssz_files = ["beacon_node/write_ssz_files"]
# Compiles the BLS crypto code so that the binary is portable across machines.
@@ -19,7 +20,7 @@ spec-minimal = []
# Support Gnosis spec and Gnosis Beacon Chain.
gnosis = []
# Use `milhouse` tree states.
tree-states = ["beacon_node/tree-states"]
tree-states = ["beacon_node/tree-states", "malloc_utils/jemalloc"]
[dependencies]
beacon_node = { "path" = "../beacon_node" }