pub struct EnvironmentalMonitor { /* private fields */ }Expand description
Environmental impact monitor for tracking carbon footprint and energy usage
Implementations§
Source§impl EnvironmentalMonitor
impl EnvironmentalMonitor
Sourcepub fn new(config: EnvironmentalConfig) -> Self
pub fn new(config: EnvironmentalConfig) -> Self
Create a new environmental monitor
Sourcepub fn set_forecast_source(&mut self, source: Box<dyn ForecastSource>)
pub fn set_forecast_source(&mut self, source: Box<dyn ForecastSource>)
Attach a real ForecastSource so Self::optimize_scheduling can
produce real carbon-aware schedules.
Sourcepub fn clear_forecast_source(&mut self)
pub fn clear_forecast_source(&mut self)
Detach the ForecastSource, if any.
Sourcepub fn has_forecast_source(&self) -> bool
pub fn has_forecast_source(&self) -> bool
Whether a ForecastSource is currently attached.
Sourcepub async fn start_monitoring(&mut self) -> Result<()>
pub async fn start_monitoring(&mut self) -> Result<()>
Start environmental monitoring
Sourcepub async fn record_session(
&mut self,
session_info: SessionInfo,
) -> Result<SessionImpactReport>
pub async fn record_session( &mut self, session_info: SessionInfo, ) -> Result<SessionImpactReport>
Record energy consumption and carbon emissions for a training/inference session
Sourcepub async fn get_real_time_metrics(
&self,
) -> Result<RealTimeEnvironmentalMetrics>
pub async fn get_real_time_metrics( &self, ) -> Result<RealTimeEnvironmentalMetrics>
Get real-time environmental metrics.
efficiency_ratio and temperature_celsius come from the most
recently recorded device measurement (see
energy_monitoring::EnergyConsumptionMonitor::record_measurement):
a real, per-measurement efficiency ratio and (when the caller
supplied one) a real device temperature. Before any measurement has
been recorded – or when the last one carried no utilization reading to
evaluate the power model against – efficiency_ratio and
temperature_celsius are honestly None, never the old hardcoded
0.87 / Some(75.0). co2_emissions_kg is None when the configured
region has no registered carbon intensity.
Sourcepub async fn optimize_scheduling(
&self,
workload: WorkloadDescription,
) -> Result<OptimalSchedule>
pub async fn optimize_scheduling( &self, workload: WorkloadDescription, ) -> Result<OptimalSchedule>
Optimize scheduling for minimum environmental impact.
Requires a real ForecastSource to be attached via
Self::set_forecast_source – fails with
EnvironmentalMonitorError::NotConfigured otherwise, rather than
scheduling against a fabricated forecast.
Sourcepub async fn generate_environmental_report(
&mut self,
report_type: ReportType,
) -> Result<EnvironmentalReport>
pub async fn generate_environmental_report( &mut self, report_type: ReportType, ) -> Result<EnvironmentalReport>
Generate comprehensive environmental impact report
Sourcepub async fn get_sustainability_recommendations(
&self,
) -> Result<Vec<SustainabilityRecommendation>>
pub async fn get_sustainability_recommendations( &self, ) -> Result<Vec<SustainabilityRecommendation>>
Get sustainability recommendations
Sourcepub async fn get_efficiency_opportunities(
&self,
) -> Result<Vec<EfficiencyOpportunity>>
pub async fn get_efficiency_opportunities( &self, ) -> Result<Vec<EfficiencyOpportunity>>
Get efficiency opportunities
Sourcepub fn get_cumulative_emissions(&self) -> &CarbonEmissions
pub fn get_cumulative_emissions(&self) -> &CarbonEmissions
Get carbon emissions data
Sourcepub fn get_measurement_history(&self) -> &[CarbonMeasurement]
pub fn get_measurement_history(&self) -> &[CarbonMeasurement]
Get measurement history
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for EnvironmentalMonitor
impl !UnwindSafe for EnvironmentalMonitor
impl Freeze for EnvironmentalMonitor
impl Send for EnvironmentalMonitor
impl Sync for EnvironmentalMonitor
impl Unpin for EnvironmentalMonitor
impl UnsafeUnpin for EnvironmentalMonitor
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.