Crate tikv_jemalloc_ctl[−][src]
Expand description
jemalloc
control and introspection.
jemalloc
offers a powerful introspection and control interface through the mallctl
function.
It can be used to tune the allocator, take heap dumps, and retrieve statistics. This crate
provides a typed API over that interface.
While mallctl
takes a string to specify an operation (e.g. stats.allocated
or
stats.arenas.15.muzzy_decay_ms
), the overhead of repeatedly parsing those strings is not
ideal. Fortunately, jemalloc
offers the ability to translate the string ahead of time into a
“Management Information Base” (MIB) to speed up future lookups.
This crate provides a type for each mallctl
operation. Calling
$op::{read(), write(x), update(x)}
on the type calls mallctl
with the
string-based API. If the operation will be repeatedly performed, a MIB for
the operation can be obtained using $op.mib()
.
Examples
Repeatedly printing allocation statistics:
use std::thread; use std::time::Duration; use tikv_jemalloc_ctl::{stats, epoch}; #[global_allocator] static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; fn main() { loop { // many statistics are cached and only updated when the epoch is advanced. epoch::advance().unwrap(); let allocated = stats::allocated::read().unwrap(); let resident = stats::resident::read().unwrap(); println!("{} bytes allocated/{} bytes resident", allocated, resident); thread::sleep(Duration::from_secs(10)); } }
Doing the same with the MIB-based API:
use std::thread; use std::time::Duration; use tikv_jemalloc_ctl::{stats, epoch}; #[global_allocator] static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; fn main() { let e = epoch::mib().unwrap(); let allocated = stats::allocated::mib().unwrap(); let resident = stats::resident::mib().unwrap(); loop { // many statistics are cached and only updated when the epoch is advanced. e.advance().unwrap(); let allocated = allocated.read().unwrap(); let resident = resident.read().unwrap(); println!("{} bytes allocated/{} bytes resident", allocated, resident); thread::sleep(Duration::from_secs(10)); } }
Modules
Arena operations.
jemalloc
’s build-time configuration.
jemalloc
’s run-time configuration.
Raw unsafe
access to the malloctl
API.
Global allocator statistics.
Thread specific operations.
Structs
Errors of the tikv_jemalloc_sys::mallct
-family of functions.
Management Information Base of a non-string value.
Management Information Base of a string value.
A Name
in the MALLCTL NAMESPACE.
State of internal background worker threads.
See background_thread
.
jemalloc
epoch.
See epoch
.
Maximum number of background threads that will be created.
jemalloc
version string.
See version
.
Traits
Safe read access to the MALLCTL NAMESPACE.
Converts a null-terminated byte-string into a Name
.
Type Definitions
Result type