pub enum EventKind {
Show 15 variants
ThrottleStart,
ThrottleEnd,
ProcessAttached,
ProcessExited,
VramPressure,
IdleGap,
CollectorStall,
HistoryReset,
HangSuspected,
DeviceLost,
DeviceReturned,
CpuSpillover,
RecordingStarted,
RecordingStopped,
RecordingDegraded,
}Variants§
ThrottleStart
ThrottleEnd
ProcessAttached
ProcessExited
VramPressure
IdleGap
CollectorStall
The collector itself fell behind its tick cadence — the recording has a hole, and the recorder must say so rather than let the gap masquerade as device idleness. Emitted by the tui collector (the engine owns tick timing, not this module).
HistoryReset
History was truncated or restarted (ring wrap on resize, store re-init); consumers must not treat the discontinuity as device behavior.
HangSuspected
Device stopped answering queries while a workload was attached — possibly a hung
kernel or driver. An inference by nature: always Confidence::Likely.
DeviceLost
A registered device stopped answering its dynamic probe entirely (consecutive
whole-probe failures, not per-metric absence — NOT_SUPPORTED stays None in the
sample and is never this). Driver reset, NVML dying, eGPU unplug, and an xe rebind
all look identical from this side of the probe, so the kind asserts only the
observed silence — the CAUSE is never claimed. Emitted by the tui collector (it
owns the probe loop and its tick counting). Always Confidence::Fact.
DeviceReturned
A device previously declared lost answered again. The samples between loss and
return were never collected; that gap stays blank in history — a hole, never
zeros. Always Confidence::Fact.
CpuSpillover
A GPU-attached process is burning CPU while the GPU sits idle — the classic
CPU-bound dataloader. An inference: always Confidence::Likely.
RecordingStarted
A recording session began folding history into the database — the flight
recorder’s own power-on mark. Without it (and its stop twin) the timeline cannot
distinguish “the GPU sat idle” from “gpuviewer wasn’t running”: unrecorded time
renders blank, and the boundary events are what make that blank legible. Emitted
by the tui collector (it owns the recorder lifecycle). Always Confidence::Fact.
RecordingStopped
The recording session ended cleanly (the stop mark and the partial rollup tail
reached the store). A session that dies without this mark — SIGKILL, OOM kill,
power loss — writes nothing, which is itself information: the NEXT session’s
start mark narrates the missing stop. Always Confidence::Fact.
RecordingDegraded
Writes to the history database started failing (disk full, permissions revoked,
the file removed under a running session) — or, on the recovery edge, started
working again. The recorder swallows the error itself so a bad disk never takes
the live view down with it, but swallowing it SILENTLY is the one thing it must
not do: this product’s entire promise is that you can scroll back, and a recorder
that quietly stopped recording breaks that promise exactly when it matters. The
same rule the collector applies to its own stalls, applied to its own storage.
Emitted by the tui collector. Always Confidence::Fact.