pub struct CpuReading {
pub mean: f64,
pub max_core: f64,
pub top_core: usize,
pub p25: f64,
pub p50: f64,
pub p75: f64,
pub cores: usize,
}Expand description
Per-category CPU readings: the mean, the hottest core, and the SHAPE of the per-core distribution.
The hottest core alone cannot answer “is there headroom”: one
pegged core on an otherwise idle box reads identically to a box
that is genuinely out of CPU. Measured 2026-08-21 on a live
stcs_adaptive run — max_core p90 = 1.000 while mean sat at
0.183 — so any guard keyed on the max would throttle at 18% host
utilization. The quartiles separate the two cases: p50 low with
max_core pegged is a single hot thread (headroom remains); p50
high is real saturation.
max_core is kept, not replaced — it remains the right signal for
spotting a single-threaded bottleneck, which is a different
question from headroom.
Fields§
§mean: f64§max_core: f64§top_core: usize§p25: f64Per-core utilization quartiles across all online cores.
p50: f64§p75: f64§cores: usizeHow many cores the quartiles were computed over — the sample size behind the shape, so a reader can tell a 2-core box’s “quartiles” from a 96-core box’s.
Trait Implementations§
Source§impl Clone for CpuReading
impl Clone for CpuReading
impl Copy for CpuReading
Source§impl Debug for CpuReading
impl Debug for CpuReading
Source§impl Default for CpuReading
impl Default for CpuReading
Source§impl PartialEq for CpuReading
impl PartialEq for CpuReading
impl StructuralPartialEq for CpuReading
Auto Trait Implementations§
impl Freeze for CpuReading
impl RefUnwindSafe for CpuReading
impl Send for CpuReading
impl Sync for CpuReading
impl Unpin for CpuReading
impl UnsafeUnpin for CpuReading
impl UnwindSafe for CpuReading
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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