Skip to main content

Metrics

Struct Metrics 

Source
pub struct Metrics {
Show 51 fields pub on_cpu: u64, pub total_runtime: u64, pub uptime_ns: u64, pub q1_placements: u64, pub q2_placements: u64, pub q3_placements: u64, pub promotions: u64, pub demotions: u64, pub aging_boosts: u64, pub short_sleep_boosts: u64, pub preemption_kicks: u64, pub cpuperf_boosts: u64, pub steals: u64, pub steals_same_llc: u64, pub steals_cross_llc: u64, pub keep_running: u64, pub enq_no_tctx: u64, pub enq_bad_weight: u64, pub enq_no_deadline: u64, pub enq_fastpath: u64, pub enq_regular: u64, pub enq_pinned_idle: u64, pub enq_pinned_busy: u64, pub enq_pinned_global: u64, pub tree_inference: u64, pub tree_fallback: u64, pub tree_disagree: u64, pub tree_samples_emitted: u64, pub tree_samples_dropped: u64, pub rt_takeovers: u64, pub rt_evacuations: u64, pub rt_redirects: u64, pub rt_reenqs: u64, pub op_lat: Vec<u64>, pub tree_samples_cap_dropped: u64, pub tree_model_generation: u64, pub tree_model_samples: u64, pub tree_model_nodes: u64, pub tree_mae_tree_us: u64, pub tree_mae_ema_us: u64, pub tree_corr_milli: i64, pub sys_lat_ema_us: u64, pub sys_rate_ema: u64, pub t_l_eff_us: u64, pub t_h_eff_us: u64, pub t_int_eff_us: u64, pub t_bnd_eff_us: u64, pub guard_eff_us: u64, pub adapt_shift: i64, pub wakeup_total: u64, pub adapt_steps: u64,
}

Fields§

§on_cpu: u64

Tasks currently executing on a CPU

§total_runtime: u64

Total CPU runtime in ns

§uptime_ns: u64

Scheduler uptime (wall clock since attach)

§q1_placements: u64

Tasks placed in Q1

§q2_placements: u64

Tasks placed in Q2

§q3_placements: u64

Tasks placed in Q3

§promotions: u64

Queue promotions

§demotions: u64

Queue demotions

§aging_boosts: u64

Aging boosts to Q1

§short_sleep_boosts: u64

Short-sleep and I/O wakeup boosts

§preemption_kicks: u64

Wakeup preemption kicks

§cpuperf_boosts: u64

Q1 cpuperf target boosts set on running

§steals: u64

Dispatch moves from remote queue DSQs

§steals_same_llc: u64

Dispatch moves from remote queue DSQs within the same LLC

§steals_cross_llc: u64

Dispatch moves from remote queue DSQs across LLC domains

§keep_running: u64

Solo-task keep-running grants on empty dispatch

§enq_no_tctx: u64

Enqueues dropped when task state cannot be allocated

§enq_bad_weight: u64

Enqueues dropped for bad weight

§enq_no_deadline: u64

Enqueues dropped for missing placement

§enq_fastpath: u64

Fast-path enqueues

§enq_regular: u64

Regular-path enqueues

§enq_pinned_idle: u64

Pinned enqueues to idle CPUs

§enq_pinned_busy: u64

Pinned enqueues to busy CPUs

§enq_pinned_global: u64

Pinned enqueues to the global DSQ

§tree_inference: u64

MLFQ tree inference walks run

§tree_fallback: u64

Classifications served by the EMA fallback while untrained

§tree_disagree: u64

Tree queue mappings that disagree with the base EMA mapping

§tree_samples_emitted: u64

Training samples emitted to the daemon

§tree_samples_dropped: u64

Training samples dropped (ring buffer full)

§rt_takeovers: u64

Realtime/DL/stop takeovers of SCX CPUs observed by the sched_switch hook

§rt_evacuations: u64

DSQ evacuation passes that ran on realtime takeovers

§rt_redirects: u64

Placements redirected off realtime-occupied CPUs

§rt_reenqs: u64

SCX_ENQ_REENQ re-enqueues counted at enqueue

§op_lat: Vec<u64>

Per-op callback latency histogram, 4 ops x 8 buckets in microseconds (stopping, dispatch, enqueue, cpu_release)

§tree_samples_cap_dropped: u64

Training samples dropped by the per-pid window cap

§tree_model_generation: u64

Committed tree model generation, 0 while untrained

§tree_model_samples: u64

Training samples behind the committed tree model

§tree_model_nodes: u64

Nodes of the committed tree model

§tree_mae_tree_us: u64

Committed tree MAE in microseconds on the held-out slice of its training window

§tree_mae_ema_us: u64

Exact EMA-baseline MAE in microseconds on the same held-out slice

§tree_corr_milli: i64§sys_lat_ema_us: u64

System wakeup-latency gauge (1s half-life EMA), microseconds

§sys_rate_ema: u64

System wakeup-rate gauge (1s half-life EMA), fixed point; >> 8 = wakeups/s

§t_l_eff_us: u64

Effective EMA Q1/Q2 band edge, microseconds

§t_h_eff_us: u64

Effective EMA Q2/Q3 band edge, microseconds

§t_int_eff_us: u64

Effective tree Q1/Q2 band edge, microseconds

§t_bnd_eff_us: u64

Effective tree Q2/Q3 band edge, microseconds

§guard_eff_us: u64

Effective same-queue preemption residency guard, microseconds

§adapt_shift: i64

Adaptation shift, fixed point (FP_ONE = 1.0)

§wakeup_total: u64

Wakeup arrivals (interval delta)

§adapt_steps: u64

Adaptation steps run (interval delta)

Implementations§

Source§

impl Metrics

Source

fn format<W: Write>(&self, w: &mut W) -> Result<()>

Source

pub fn delta(&self, rhs: &Self) -> Self

Interval delta. Counters are wrapping deltas over the poll interval. Gauges (on_cpu, uptime_ns, the tree model metadata) pass through as instantaneous values.

Trait Implementations§

Source§

impl Clone for Metrics

Source§

fn clone(&self) -> Metrics

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Metrics

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Metrics

Source§

fn default() -> Metrics

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Metrics

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Meta for Metrics

Source§

impl Serialize for Metrics

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToJson for T
where T: Meta + Serialize,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more