pub struct Metrics {Show 88 fields
pub nr_running: u64,
pub total_runtime: u64,
pub reserved_dispatches: u64,
pub urgent_latency_dispatches: u64,
pub urgent_latency_burst_grants: u64,
pub urgent_latency_burst_continuations: u64,
pub latency_dispatches: u64,
pub shared_dispatches: u64,
pub contained_dispatches: u64,
pub local_fast_dispatches: u64,
pub wake_preempt_dispatches: u64,
pub budget_refill_events: u64,
pub budget_exhaustions: u64,
pub positive_budget_wakeups: u64,
pub urgent_latency_enqueues: u64,
pub latency_lane_enqueues: u64,
pub latency_lane_candidates: u64,
pub latency_candidate_local_enqueues: u64,
pub latency_candidate_hog_blocks: u64,
pub latency_debt_raises: u64,
pub latency_debt_decays: u64,
pub latency_debt_urgent_enqueues: u64,
pub urgent_latency_misses: u64,
pub reserved_local_enqueues: u64,
pub reserved_global_enqueues: u64,
pub shared_wakeup_enqueues: u64,
pub runnable_wakeups: u64,
pub cpu_release_reenqueues: u64,
pub urgent_latency_burst_rounds: u64,
pub high_priority_burst_rounds: u64,
pub local_reserved_burst_rounds: u64,
pub local_reserved_fast_grants: u64,
pub local_reserved_burst_continuations: u64,
pub local_quota_skips: u64,
pub reserved_quota_skips: u64,
pub quota_shared_forces: u64,
pub quota_contained_forces: u64,
pub init_task_events: u64,
pub enable_events: u64,
pub exit_task_events: u64,
pub cpu_stability_biases: u64,
pub last_cpu_matches: u64,
pub cpu_migrations: u64,
pub rt_sensitive_wakeups: u64,
pub rt_sensitive_local_enqueues: u64,
pub rt_sensitive_preempts: u64,
pub reserved_lane_burst_rounds: u64,
pub reserved_lane_grants: u64,
pub reserved_lane_burst_continuations: u64,
pub reserved_lane_skips: u64,
pub reserved_lane_shared_forces: u64,
pub reserved_lane_contained_forces: u64,
pub reserved_lane_shared_misses: u64,
pub reserved_lane_contained_misses: u64,
pub contained_starved_head_enqueues: u64,
pub shared_starved_head_enqueues: u64,
pub direct_local_candidates: u64,
pub direct_local_enqueues: u64,
pub direct_local_rejections: u64,
pub direct_local_mismatches: u64,
pub ipc_wake_candidates: u64,
pub ipc_local_enqueues: u64,
pub ipc_score_raises: u64,
pub ipc_boosts: u64,
pub contained_enqueues: u64,
pub hog_containment_enqueues: u64,
pub hog_recoveries: u64,
pub contained_starvation_rounds: u64,
pub shared_starvation_rounds: u64,
pub contained_rescue_dispatches: u64,
pub shared_rescue_dispatches: u64,
pub tune_latency_credit_grant: u64,
pub tune_latency_credit_decay: u64,
pub tune_latency_debt_urgent_min: u64,
pub tune_urgent_latency_burst_max: u64,
pub tune_reserved_quota_burst_max: u64,
pub tune_contained_starvation_max: u64,
pub tune_shared_starvation_max: u64,
pub tune_local_fast_nr_running_max: u64,
pub tune_local_reserved_burst_max: u64,
pub tune_reserved_lane_burst_max: u64,
pub autotune_generation: u64,
pub autotune_mode: u64,
pub tune_reserved_max_ns: u64,
pub tune_shared_slice_ns: u64,
pub tune_interactive_floor_ns: u64,
pub tune_preempt_budget_min_ns: u64,
pub tune_preempt_refill_min_ns: u64,
}Fields§
§nr_running: u64Number of running tasks
total_runtime: u64Total CPU runtime in ns
reserved_dispatches: u64Tasks dispatched from the reserved positive-budget DSQ
urgent_latency_dispatches: u64Tasks dispatched from the urgent latency lane DSQ
urgent_latency_burst_grants: u64Urgent-latency dispatches granted through the bounded burst path
urgent_latency_burst_continuations: u64Urgent-latency dispatches that continued an already-active burst window
latency_dispatches: u64Tasks dispatched from the dedicated latency lane DSQ
Tasks dispatched from the shared DSQ
contained_dispatches: u64Tasks dispatched from the contained throughput/background DSQ
local_fast_dispatches: u64Tasks fast-dispatched to local DSQs
wake_preempt_dispatches: u64Positive-budget wakeups sent to local DSQs with preempt kicks
budget_refill_events: u64Wakeups that refilled task budget
budget_exhaustions: u64Times a task ran its budget down to zero or below
positive_budget_wakeups: u64Wakeups that still had positive budget at enqueue time
urgent_latency_enqueues: u64Latency-debt wakeups inserted into the urgent latency lane
latency_lane_enqueues: u64Interactive wakeups inserted into the dedicated latency lane
latency_lane_candidates: u64Soft latency-lane candidates observed before final routing decisions
latency_candidate_local_enqueues: u64Latency-lane candidates that were consumed by the local reserved fast path
latency_candidate_hog_blocks: u64Soft latency-lane candidates blocked because they were already contained hogs
latency_debt_raises: u64Interactive budget exhaustions that raised per-task latency debt
latency_debt_decays: u64Times latency debt decayed after the scheduler gave a debt-bearing task latency service
latency_debt_urgent_enqueues: u64Latency-lane enqueues driven by accumulated latency debt rather than fresh wake credit alone
urgent_latency_misses: u64Urgent-debt wakeups that still missed the urgent lane and fell back to ordinary routing
reserved_local_enqueues: u64Positive-budget tasks inserted directly into selected local DSQs
reserved_global_enqueues: u64Positive-budget tasks enqueued to the reserved global DSQ
Wakeups that fell back to the shared DSQ
runnable_wakeups: u64Runnable wakeups observed before enqueue/select_cpu decisions
cpu_release_reenqueues: u64Local DSQ tasks rescued during cpu_release
urgent_latency_burst_rounds: u64Maximum current consecutive urgent-latency dispatches within the bounded burst window across CPUs
high_priority_burst_rounds: u64Maximum current consecutive high-priority dispatches since shared or contained service last ran across CPUs
local_reserved_burst_rounds: u64Maximum current consecutive ordinary local-reserved fast-path enqueues under pressure across CPUs
local_reserved_fast_grants: u64Ordinary local-reserved fast-path grants that counted toward the local burst window
local_reserved_burst_continuations: u64Ordinary local-reserved fast-path grants that continued an already-active local burst window
local_quota_skips: u64Ordinary local-reserved fast-path enqueues skipped by the local burst cap
reserved_quota_skips: u64Dispatch rounds where a lower-lane quota check skipped the normal reserved/high-priority order
Shared-lane dispatches forced early by the bounded quota
quota_contained_forces: u64Contained-lane dispatches forced early by the bounded quota
init_task_events: u64Tasks initialized through init_task task storage setup
enable_events: u64Tasks explicitly initialized on entry into scx_flow
exit_task_events: u64Tasks explicitly cleaned up on exit from scx_flow
cpu_stability_biases: u64Wakeups where select_cpu() biased toward the task’s last CPU
last_cpu_matches: u64Wakeups where the chosen target CPU matched the task’s last CPU
cpu_migrations: u64Observed task migrations between successive runs
rt_sensitive_wakeups: u64Pinned positive-budget wakeups classified into the RT-sensitive lane
rt_sensitive_local_enqueues: u64RT-sensitive wakeups inserted directly into selected local DSQs
rt_sensitive_preempts: u64RT-sensitive wakeups that used the preempt path
reserved_lane_burst_rounds: u64Maximum current consecutive dispatches from the reserved global DSQ across CPUs
reserved_lane_grants: u64Dispatches granted from the reserved global DSQ while reserved-lane shaping was active
reserved_lane_burst_continuations: u64Reserved global dispatches that continued an already-active reserved-lane burst window
reserved_lane_skips: u64Reserved global dispatches skipped because the reserved-lane burst cap engaged
Shared-lane dispatches forced by the reserved-lane burst cap
reserved_lane_contained_forces: u64Contained-lane dispatches forced by the reserved-lane burst cap
Reserved-lane cap attempts that wanted shared service but found no immediately dispatchable shared work
reserved_lane_contained_misses: u64Reserved-lane cap attempts that wanted contained service but found no immediately dispatchable contained work
contained_starved_head_enqueues: u64Contained-lane enqueues promoted to the head because the contained lane was already meaningfully starved
Shared-lane enqueues promoted to the head because the shared lane was already meaningfully starved
direct_local_candidates: u64Direct-local wakeups that were eligible for the bounded front-door before final fast-path checks
direct_local_enqueues: u64Positive-budget wakeups routed through the bounded direct-local front-door without using the RT-sensitive path
direct_local_rejections: u64Direct-local candidates that lost the front-door and decayed back toward ordinary routing
direct_local_mismatches: u64Wakeups where the chosen target CPU did not match the remembered last CPU continuity hint
ipc_wake_candidates: u64Wakeups that qualified for the decayed IPC-confidence path
ipc_local_enqueues: u64IPC-confidence wakeups inserted directly into selected local DSQs
ipc_score_raises: u64Times the decayed IPC-confidence score strengthened after a short blocking run
ipc_boosts: u64Local slice boosts granted through the IPC-confidence path
contained_enqueues: u64Tasks routed into the dedicated contained throughput/background DSQ
hog_containment_enqueues: u64Enqueues where a persistent hog-like task had latency privileges reduced
hog_recoveries: u64Times a previously contained hog-like task decayed back below containment
contained_starvation_rounds: u64Maximum current consecutive dispatch rounds since a contained/background task last ran across CPUs
Maximum current consecutive dispatch rounds since a shared-fallback task last ran across CPUs
contained_rescue_dispatches: u64Contained/background tasks rescued early by the fairness floor
Shared-fallback tasks rescued early by the fairness floor
tune_latency_credit_grant: u64Current latency-credit grant per strong interactive refill
tune_latency_credit_decay: u64Current latency-credit decay applied when credit is consumed or exhausted
tune_latency_debt_urgent_min: u64Current debt threshold required before a wakeup qualifies for the urgent latency lane
tune_urgent_latency_burst_max: u64Current maximum consecutive urgent-latency dispatches allowed in one burst
tune_reserved_quota_burst_max: u64Current maximum consecutive high-priority dispatches before lower-lane quota checks engage
tune_contained_starvation_max: u64Current contained-lane fairness-floor threshold
Current shared-lane fairness-floor threshold
tune_local_fast_nr_running_max: u64Current runnable-pressure cap for the ordinary local fast path
tune_local_reserved_burst_max: u64Current maximum consecutive ordinary local-reserved fast-path enqueues allowed under pressure
tune_reserved_lane_burst_max: u64Current maximum consecutive dispatches allowed from the reserved global DSQ before forcing a lower-lane rotation
autotune_generation: u64Adaptive tuning generation counter
autotune_mode: u64Adaptive tuning mode (0=balanced, 1=latency, 2=throughput)
tune_reserved_max_ns: u64Current reserved slice cap in ns
Current shared slice in ns
tune_interactive_floor_ns: u64Current interactive wake refill floor in ns
tune_preempt_budget_min_ns: u64Current preempt budget threshold in ns
tune_preempt_refill_min_ns: u64Current preempt refill threshold in ns
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Metrics
impl<'de> Deserialize<'de> for Metrics
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Metrics
impl RefUnwindSafe for Metrics
impl Send for Metrics
impl Sync for Metrics
impl Unpin for Metrics
impl UnsafeUnpin for Metrics
impl UnwindSafe for Metrics
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,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
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) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
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
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.