energy_monitor
energy_monitor
¶
EnergyMonitor ABC — multi-vendor energy measurement with hardware counters.
Classes¶
EnergyVendor
¶
Bases: str, Enum
Supported energy measurement vendors.
EnergySample
dataclass
¶
EnergySample(energy_joules: float = 0.0, mean_power_watts: float = 0.0, peak_power_watts: float = 0.0, duration_seconds: float = 0.0, num_snapshots: int = 0, mean_utilization_pct: float = 0.0, peak_utilization_pct: float = 0.0, mean_memory_used_gb: float = 0.0, peak_memory_used_gb: float = 0.0, mean_temperature_c: float = 0.0, peak_temperature_c: float = 0.0, vendor: str = '', device_name: str = '', device_count: int = 0, energy_method: str = '', cpu_energy_joules: float = 0.0, gpu_energy_joules: float = 0.0, dram_energy_joules: float = 0.0, ane_energy_joules: float = 0.0)
Aggregated energy metrics over an inference bracket.
Superset of GpuSample — adds vendor, device info, energy method,
and per-component breakdown (CPU, GPU, DRAM, ANE).
EnergyMonitor
¶
Bases: ABC
Abstract base class for energy measurement backends.
Each vendor implementation probes for hardware support at init,
exposes an available() class method, and provides a sample()
context manager that measures energy over a code block.
Functions¶
available
abstractmethod
staticmethod
¶
vendor
abstractmethod
¶
vendor() -> EnergyVendor
energy_method
abstractmethod
¶
sample
abstractmethod
¶
sample() -> Generator[EnergySample, None, None]
Context manager that measures energy during the enclosed block.
Yields an EnergySample that is populated when the block exits.
Source code in src/openjarvis/telemetry/energy_monitor.py
snapshot
¶
snapshot() -> EnergySample
Return an instantaneous energy reading without start/stop bracket.
Subclasses should override to provide actual readings. Default returns an empty sample.
Functions¶
create_energy_monitor
¶
create_energy_monitor(poll_interval_ms: int = 50, prefer_vendor: Optional[str] = None) -> Optional[EnergyMonitor]
Factory — auto-detect and return the best available EnergyMonitor.
Detection order: NVIDIA > AMD > Apple > CPU RAPL. If prefer_vendor is set, try that vendor first.
Returns None if no energy monitoring is available.