pub struct RetentionStats {
pub budget: RetentionBudget,
pub retained: usize,
pub retained_bytes: usize,
pub span: Duration,
pub evicted: u64,
pub expired: u64,
}Expand description
What the ring holds and what its bounds have cost, as of one read.
All Copy: the monitor hands this out per stats tick, and a snapshot
that allocated would contend with the ingest path for nothing.
Fields§
§budget: RetentionBudgetThe budget in force — the banner states it (#217).
retained: usizeSamples currently retained.
retained_bytes: usizeAccounted bytes currently retained.
span: DurationOldest retained sample → newest, on the arrival clock. Zero when
fewer than two samples are held. When RetentionStats::evicted is
non-zero this is shorter than budget.max_age claims — which is why
both ride together.
evicted: u64Samples dropped because the byte budget bit (O6: the bound’s
cost). Counted apart from RetentionStats::expired, from broadcast
lag, and from both stats-table populations — v1.18 R1 forbids the
fold.
expired: u64Samples that aged past budget.max_age — the window sliding as
declared.
Trait Implementations§
Source§impl Clone for RetentionStats
impl Clone for RetentionStats
Source§fn clone(&self) -> RetentionStats
fn clone(&self) -> RetentionStats
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for RetentionStats
Source§impl Debug for RetentionStats
impl Debug for RetentionStats
impl Eq for RetentionStats
Source§impl PartialEq for RetentionStats
impl PartialEq for RetentionStats
impl StructuralPartialEq for RetentionStats
Auto Trait Implementations§
impl Freeze for RetentionStats
impl RefUnwindSafe for RetentionStats
impl Send for RetentionStats
impl Sync for RetentionStats
impl Unpin for RetentionStats
impl UnsafeUnpin for RetentionStats
impl UnwindSafe for RetentionStats
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> 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§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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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