pub struct PprofAlloc { /* private fields */ }Expand description
Global allocator that can collect allocation counters and pprof heap profiles.
Use this as the process #[global_allocator]. The backing allocator is
selected from ALLOCATOR_ENV on first allocation.
Implementations§
Source§impl PprofAlloc
impl PprofAlloc
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Create an allocator with profiling disabled.
Use Self::with_pprof, Self::with_pprof_sample_rate, or
Self::with_stats to enable collection.
Sourcepub const fn with_default(self, allocator: Allocator) -> Self
pub const fn with_default(self, allocator: Allocator) -> Self
Set the allocator used when ALLOCATOR_ENV is unset.
Sourcepub const fn with_pprof(self) -> Self
pub const fn with_pprof(self) -> Self
Enable sampled pprof stack profiling using DEFAULT_PPROF_SAMPLE_RATE.
When the active allocator is jemalloc and the backend env selects native
profiling, builds with allocator-jemalloc use jemalloc’s native heap
profiler instead of wrapper-side allocation tracking.
Sourcepub const fn with_pprof_sample_rate(self, bytes: usize) -> Self
pub const fn with_pprof_sample_rate(self, bytes: usize) -> Self
Enable sampled pprof stack profiling with an explicit byte sample rate.
A rate of 1 records every allocation. A rate of 0 disables pprof
stack recording while still allowing other enabled collectors to run.
When native jemalloc profiling is selected, this wrapper-side rate is
ignored. Use PPROF_SAMPLE_RATE_ENV with configure to set jemalloc’s
runtime sample rate.
Sourcepub const fn with_pprof_sample_rate_from_env(self, default_rate: usize) -> Self
pub const fn with_pprof_sample_rate_from_env(self, default_rate: usize) -> Self
Enable pprof stack profiling with the sample rate read from the environment.
PPROF_SAMPLE_RATE_ENV is read lazily on the first profiled allocation.
If the variable is missing or invalid, default_rate is used.
When native jemalloc profiling is selected, configure applies this
environment variable to jemalloc’s runtime sample rate.
Sourcepub const fn with_stats(self) -> Self
pub const fn with_stats(self) -> Self
Enable coarse process-wide allocation and free counters.
When the active allocator is jemalloc and jemalloc support is compiled in, snapshots use jemalloc’s native process stats instead of these wrapper-side counters.
Trait Implementations§
Source§impl Default for PprofAlloc
impl Default for PprofAlloc
Source§impl GlobalAlloc for PprofAlloc
impl GlobalAlloc for PprofAlloc
Source§unsafe fn alloc(&self, layout: Layout) -> *mut u8
unsafe fn alloc(&self, layout: Layout) -> *mut u8
layout. Read moreSource§unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8
unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8
alloc, but also ensures that the contents
are set to zero before being returned. Read moreAuto Trait Implementations§
impl !Freeze for PprofAlloc
impl RefUnwindSafe for PprofAlloc
impl Send for PprofAlloc
impl Sync for PprofAlloc
impl Unpin for PprofAlloc
impl UnsafeUnpin for PprofAlloc
impl UnwindSafe for PprofAlloc
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more