pub struct PoolStats {Show 25 fields
pub inserts: u64,
pub frees: u64,
pub writes_elided: u64,
pub evictions_compress: u64,
pub evictions_cheap: u64,
pub extent_bytes_written: u64,
pub spill_scheduled: u64,
pub spill_cancelled: u64,
pub spill_in_flight: u64,
pub slot_exhausted_fallbacks: u64,
pub oversize_payloads: u64,
pub live_chunks: u64,
pub resident_bytes: u64,
pub oversize_bytes: u64,
pub warm_bytes: u64,
pub warm_reuses: u64,
pub eager_backs: u64,
pub admissions_budget: u64,
pub admissions_steal: u64,
pub admissions_denied: u64,
pub extent_resident_bytes: u64,
pub extent_unreclaimable_bytes: u64,
pub extent_pageouts: u64,
pub extent_pageout_incomplete: u64,
pub extent_arena_fallbacks: u64,
}pool only.Expand description
Snapshot of pool counters.
Fields§
§inserts: u64Chunks inserted.
frees: u64Chunks freed (handle dropped).
writes_elided: u64Backing writes elided: chunks dead before their compression
completed, so no extent write happened. Covers chunks freed while
UnbackedResident and chunks freed while queued for a spill thread
that had not yet compressed them.
evictions_compress: u64Evictions that compressed the chunk into a new extent.
evictions_cheap: u64Evictions of BackedResident chunks: pure page release, no I/O.
extent_bytes_written: u64Compressed bytes written into extents.
spill_scheduled: u64Evictions handed to spill threads.
spill_cancelled: u64Compressions cancelled because the chunk was freed while queued or
in flight, whatever scheduled them. Eager-backing work counts here
but never in spill_scheduled, so this can exceed that counter.
spill_in_flight: u64Entries currently queued for or being processed by spill threads.
slot_exhausted_fallbacks: u64Inserts that fell back to the heap because their size class had no free slot (the live set outgrew the class reservation). Heap-backed chunks behave like oversize ones: always resident, never paged.
oversize_payloads: u64Inserts whose payload exceeded the largest size class and therefore went straight to a heap-backed oversize chunk.
live_chunks: u64Live size-classed chunks across all classes, whatever their residency. For backlog-shaped consumers this tracks the un-drained backlog in chunks. (Slots are scoped to residency, so the quantity that exhausts a class reservation is the resident subset, bounded by the budget.)
resident_bytes: u64Uncompressed bytes of currently resident chunks (including oversize).
oversize_bytes: u64Uncompressed bytes of live oversize chunks.
warm_bytes: u64Class bytes of free slots currently kept warm (pages resident for
fault-free reuse). Bounded by a fraction of the budget; RSS exceeds
resident_bytes by up to this amount.
warm_reuses: u64Slot allocations served from the warm list: reuses that faulted no pages and skipped the kernel’s page zeroing.
eager_backs: u64Chunks eagerly compressed to BackedResident by idle spill threads
(write-behind): still readable in their slots, with eviction
pre-paid.
admissions_budget: u64Evicted chunks re-admitted to BackedResident by an admitting read
out of free budget headroom.
admissions_steal: u64Evicted chunks re-admitted to BackedResident by an admitting read
stealing the slot of a clean backed victim of the same size class.
The victim becomes Evicted with zero I/O and its extent intact.
admissions_denied: u64Admitting reads of evicted chunks served as a plain decompress instead: no budget headroom (or an exhausted size class), and no clean victim whose growth the budget could absorb.
extent_resident_bytes: u64Allocation bytes of compressed extents currently resident — the compressed-but-resident middle tier. Bounded by the RSS target; exceeding it pages the oldest extents out to the swap device.
extent_unreclaimable_bytes: u64Allocation bytes of resident extents the RSS target cannot push out: retry-capped arena extents (the kernel declined the reclaim advice until the retry budget ran out) and heap-fallback extents. The compressed tier settles above its capacity by this amount. Climbing steadily means pages cannot reach the swap device (no swap, or a cgroup that cannot reclaim).
extent_pageouts: u64Extents pushed to the swap device by RSS-target enforcement, with the whole range observed nonresident afterwards.
extent_pageout_incomplete: u64Pageout passes whose observation found some of the extent’s pages
still mapped: MADV_PAGEOUT may decline pages and still succeed, so
the page table decides. The extent keeps its full resident
accounting and is retried until its per-extent retry cap. Climbing
steadily on a loaded pool means pages cannot actually be unmapped to
the swap device (no swap, or a cgroup that cannot reclaim).
extent_arena_fallbacks: u64Extent writes that fell back to the heap because their extent-arena class had no free slot. Heap-backed extents stay readable but are never paged out, so their compressed bytes hold RAM until freed.
Trait Implementations§
impl Copy for PoolStats
impl Eq for PoolStats
impl StructuralPartialEq for PoolStats
Auto Trait Implementations§
impl Freeze for PoolStats
impl RefUnwindSafe for PoolStats
impl Send for PoolStats
impl Sync for PoolStats
impl Unpin for PoolStats
impl UnsafeUnpin for PoolStats
impl UnwindSafe for PoolStats
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
Source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign, for types that do not implement AddAssign.Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
map-response-body only.Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
decompression-br or decompression-deflate or decompression-gzip or decompression-zstd only.Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
trace only.Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
trace only.Source§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
follow-redirect only.