pub struct StallDiagnostic {
pub wchan: String,
pub syscall: String,
pub state: String,
pub stack: Option<String>,
pub status_full: String,
pub cgroup: String,
pub host_loadavg: String,
}Expand description
One-shot diagnostic snapshot captured at stall-trip time.
Each field is the contents of a /proc/<pid>/<field> file
(or a stand-in describing why the read failed). Field
extraction is best-effort: a missing /proc/<pid>/stack
(requires CAP_SYS_ADMIN) does NOT block the diagnostic;
every field carries its own "[unreadable: <reason>]" stand-in
so an operator triaging the stall can tell apart “kernel
didn’t expose it” from “monitor failed to read it”.
Fields§
§wchan: String/proc/<pid>/wchan — kernel symbol the task is sleeping
in, or 0 when the task is runnable / wchan is unresolvable.
syscall: String/proc/<pid>/syscall — first field is the syscall number
the task is blocked in (or running when on-CPU).
state: String/proc/<pid>/status task-state line (“State: S
(sleeping)”). Parsed down to the single-letter state
code; the full status file is preserved in status_full.
stack: Option<String>/proc/<pid>/stack — kernel-stack trace; commonly
unreadable without CAP_SYS_ADMIN. None when absent
(versus an unreadable string in the string fields).
status_full: String/proc/<pid>/status raw — full text for fields beyond
State: the operator may want to inspect (Cpus_allowed,
Threads, ctxt counts).
cgroup: String/proc/<pid>/cgroup — v2 path the task belongs to.
host_loadavg: StringHost’s /proc/loadavg at trip time — useful for ruling
out “stall” caused by extreme host load rather than
scheduler misbehavior.
Trait Implementations§
Source§impl Clone for StallDiagnostic
impl Clone for StallDiagnostic
Source§fn clone(&self) -> StallDiagnostic
fn clone(&self) -> StallDiagnostic
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StallDiagnostic
impl Debug for StallDiagnostic
Source§impl<'de> Deserialize<'de> for StallDiagnostic
impl<'de> Deserialize<'de> for StallDiagnostic
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 StallDiagnostic
impl RefUnwindSafe for StallDiagnostic
impl Send for StallDiagnostic
impl Sync for StallDiagnostic
impl Unpin for StallDiagnostic
impl UnwindSafe for StallDiagnostic
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