pub struct PowerManager { /* private fields */ }Expand description
Power manager
Implementations§
Source§impl PowerManager
impl PowerManager
Sourcepub fn set_orchestration_state(&mut self, state: AmbientOrchestrationState)
pub fn set_orchestration_state(&mut self, state: AmbientOrchestrationState)
Set the current orchestration state so power estimates track the
real state machine in orchestrator.rs (ModelLifecycle).
Sourcepub fn set_active_model_count(&mut self, count: usize)
pub fn set_active_model_count(&mut self, count: usize)
Set the number of models currently active on the managed device.
Sourcepub fn can_execute(&self, _device: &AmbientDevice) -> bool
pub fn can_execute(&self, _device: &AmbientDevice) -> bool
Check if device can execute task
Sourcepub fn update_power_consumption(
&mut self,
device: &mut AmbientDevice,
execution_time: Duration,
)
pub fn update_power_consumption( &mut self, device: &mut AmbientDevice, execution_time: Duration, )
Update power consumption after executing a task on a device.
Uses the power optimizer to record the power state transition and the power policy to determine the power budget.
Sourcepub fn power_policy(&self) -> &PowerPolicy
pub fn power_policy(&self) -> &PowerPolicy
Get the current power policy.
Sourcepub fn set_power_policy(&mut self, policy: PowerPolicy)
pub fn set_power_policy(&mut self, policy: PowerPolicy)
Set the power policy.
Sourcepub fn power_optimizer_mut(&mut self) -> &mut PowerOptimizer
pub fn power_optimizer_mut(&mut self) -> &mut PowerOptimizer
Get a mutable reference to the power optimizer for direct optimization.
Sourcepub fn battery_monitor_mut(&mut self) -> &mut BatteryMonitor
pub fn battery_monitor_mut(&mut self) -> &mut BatteryMonitor
Get a mutable reference to the battery monitor for updates.
Sourcepub fn thermal_monitor_mut(&mut self) -> &mut ThermalMonitor
pub fn thermal_monitor_mut(&mut self) -> &mut ThermalMonitor
Get a mutable reference to the thermal monitor for updates.
Sourcepub fn get_battery_level(&self, _device_id: &str) -> f64
pub fn get_battery_level(&self, _device_id: &str) -> f64
Get battery level
Sourcepub fn get_thermal_state(&self, device_id: &str) -> ThermalState
pub fn get_thermal_state(&self, device_id: &str) -> ThermalState
Get thermal state derived from the current estimated power draw.
Power-to-thermal mapping (mobile SoC heuristic):
< 3W→Normal(cool)3–7W→Warm> 7W→Critical
Sourcepub fn get_power_consumption(&self, device_id: &str) -> f64
pub fn get_power_consumption(&self, device_id: &str) -> f64
Get power consumption in watts.
On platforms exposing a power API (e.g. RAPL on Intel, the Energy Meter on Android) this would query the hardware. On every other target we estimate consumption from the current orchestration state and the number of active models, which is what battery-aware ML scheduling and thermal management rely on:
| State | Base power |
|---|---|
| Idle | ~0.5 W |
| Active inference | ~5.0 W + (active_models × 2.0 W) |
| Scrubbing | ~3.0 W |
| Streaming | ~4.0 W |
Sourcepub fn estimate_battery_life_remaining(
&self,
current_battery_pct: f64,
battery_capacity_wh: f64,
) -> f64
pub fn estimate_battery_life_remaining( &self, current_battery_pct: f64, battery_capacity_wh: f64, ) -> f64
Estimate battery life remaining in hours.
hours = (battery_capacity_wh * current_battery_pct / 100.0) / power_consumption
Returns 0.0 if the estimated power consumption is zero (avoids
division by zero) or if the battery percentage is non-positive.
Sourcepub fn should_throttle_inference(&self) -> bool
pub fn should_throttle_inference(&self) -> bool
Decide whether inference should be throttled.
Returns true when the thermal state is Critical or when the
estimated battery life (using the battery monitor’s current charge
against a 15 Wh mobile battery as a reasonable default) drops below
1 hour.
Sourcepub fn get_power_metrics(&self) -> PowerMetrics
pub fn get_power_metrics(&self) -> PowerMetrics
Aggregate the current power/thermal/battery snapshot.
estimated_battery_hours is Some when a non-zero battery capacity is
known; here we use the battery monitor’s current level against a 15 Wh
mobile battery default. Returns None when the device has no battery
(e.g. mains-powered embedded host).
Auto Trait Implementations§
impl Freeze for PowerManager
impl RefUnwindSafe for PowerManager
impl Send for PowerManager
impl Sync for PowerManager
impl Unpin for PowerManager
impl UnsafeUnpin for PowerManager
impl UnwindSafe for PowerManager
Blanket Implementations§
§impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
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
§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