pub struct StallReport {
pub pid: pid_t,
pub comm: String,
pub samples: Vec<SchedSample>,
pub captured_at: Instant,
pub diagnostic: StallDiagnostic,
}Expand description
One stall report: a worker pid plus the sample window that triggered the stall predicate plus the captured diagnostic.
Pushed onto StallMonitor::reports by the polling thread the
moment the predicate fires. The thread continues running so
subsequent stalls on the same pid (or other pids) also surface,
but a pid is “re-armed” only after observing forward progress
(any non-zero delta) so a permanently-stuck task fires once and
then stays silent until it moves again — preventing a single
stall from spamming the report list every poll cycle.
Fields§
§pid: pid_tThe stalled worker’s pid.
comm: Stringcomm field from /proc/<pid>/comm at trip time — the
task’s name (SpinWait_0, etc.) so an operator can map
the pid back to a scenario WorkSpec without inspecting
the diagnostic’s full status file.
samples: Vec<SchedSample>The sample window that triggered the predicate. Length
equals STALL_WINDOW at the moment of fire; later
samples are NOT appended (each report is a snapshot, not
a rolling view).
captured_at: InstantWall-clock instant the predicate fired. Not serialized —
see SchedSample::captured_at for the rationale.
diagnostic: StallDiagnosticDiagnostic snapshot captured immediately after the trip.
Trait Implementations§
Source§impl Clone for StallReport
impl Clone for StallReport
Source§fn clone(&self) -> StallReport
fn clone(&self) -> StallReport
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StallReport
impl Debug for StallReport
Source§impl<'de> Deserialize<'de> for StallReport
impl<'de> Deserialize<'de> for StallReport
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 StallReport
impl RefUnwindSafe for StallReport
impl Send for StallReport
impl Sync for StallReport
impl Unpin for StallReport
impl UnwindSafe for StallReport
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> 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>
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