pub struct HardwareState {Show 15 fields
pub captured_at: u64,
pub machine: MachineIdentity,
pub gpu_temp_c: Option<f64>,
pub chassis_temps_c: Option<Vec<ThermalZone>>,
pub sm_clock_mhz: Option<f64>,
pub sm_clock_max_mhz: Option<f64>,
pub throttle_counters: ThrottleCounters,
pub throttle_active: ThrottleActive,
pub mem_available_kb: Option<u64>,
pub mem_total_kb: Option<u64>,
pub page_cache_kb: Option<u64>,
pub gpu_compute_apps: Option<Vec<GpuComputeApp>>,
pub cpu_governor: Option<String>,
pub persistence_mode: Option<bool>,
pub sources: Vec<String>,
}Expand description
2026-09-26: Everything the collector could read about the box at one instant.
The executor captures it before a run and again when the run’s terminal frame
is ready; HardwareStateDelta is the difference.
Fields§
§captured_at: u642026-09-26: Unix seconds; 0 when the system clock reads before the epoch.
machine: MachineIdentity§gpu_temp_c: Option<f64>§chassis_temps_c: Option<Vec<ThermalZone>>2026-09-26: Every /sys/class/thermal zone whose temperature parsed, in
zone-number order. None means the directory could not be read, not
“this box has no zones”.
sm_clock_mhz: Option<f64>§sm_clock_max_mhz: Option<f64>§throttle_counters: ThrottleCounters§throttle_active: ThrottleActive§mem_available_kb: Option<u64>2026-09-26: MemAvailable from /proc/meminfo, kB.
mem_total_kb: Option<u64>§page_cache_kb: Option<u64>2026-09-26: Cached from /proc/meminfo, kB.
gpu_compute_apps: Option<Vec<GpuComputeApp>>2026-09-26: The --query-compute-apps rows. When that query prints nothing
or fails, Some(vec![]) if --list-gpus answers, else None. The
precheck warns on None and accepts an empty list.
cpu_governor: Option<String>§persistence_mode: Option<bool>§sources: Vec<String>2026-09-26: Which collectors answered, from "nvidia-smi", "procfs" and
"sysfs". Empty means none did.
Implementations§
Source§impl HardwareState
impl HardwareState
Sourcepub fn collect() -> Self
pub fn collect() -> Self
2026-09-26: Read the local box; see super::collect. A source that fails
leaves its fields unset rather than failing the capture.
Sourcepub fn foreign_compute_apps(&self) -> Option<usize>
pub fn foreign_compute_apps(&self) -> Option<usize>
2026-09-26: GPU compute processes other than this process, so a server
running in this process is not counted and a separate server process is.
None when the list could not be read. The precheck refuses a Speed run
above super::policy::MAX_FOREIGN_COMPUTE_APPS.
Sourcepub fn hottest_chassis_c(&self) -> Option<f64>
pub fn hottest_chassis_c(&self) -> Option<f64>
2026-09-26: The hottest chassis zone; None when no zone was read.
Sourcepub fn clock_headroom(&self) -> Option<f64>
pub fn clock_headroom(&self) -> Option<f64>
2026-09-26: Current SM clock as a fraction of the box’s own maximum;
None when either is missing or the maximum is not positive.
Meaningful only under load: the idle GB10 fixture reads 208 of 3003 MHz
(fixtures/gb10_query_gpu.csv).
Trait Implementations§
Source§impl Clone for HardwareState
impl Clone for HardwareState
Source§fn clone(&self) -> HardwareState
fn clone(&self) -> HardwareState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for HardwareState
impl Debug for HardwareState
Source§impl Default for HardwareState
impl Default for HardwareState
Source§fn default() -> HardwareState
fn default() -> HardwareState
Source§impl<'de> Deserialize<'de> for HardwareState
impl<'de> Deserialize<'de> for HardwareState
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>,
Source§impl PartialEq for HardwareState
impl PartialEq for HardwareState
Source§impl Serialize for HardwareState
impl Serialize for HardwareState
impl StructuralPartialEq for HardwareState
Auto Trait Implementations§
impl Freeze for HardwareState
impl RefUnwindSafe for HardwareState
impl Send for HardwareState
impl Sync for HardwareState
impl Unpin for HardwareState
impl UnwindSafe for HardwareState
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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