From c2d63b96cbbd3be653fa0023fadae7df3babaf32 Mon Sep 17 00:00:00 2001 From: Lennard Kittner Date: Sun, 23 Mar 2025 17:12:25 +0100 Subject: Make Frequency Service available to rest of code --- src/energy.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/energy.rs') diff --git a/src/energy.rs b/src/energy.rs index 9fe37b5..ed8b65e 100644 --- a/src/energy.rs +++ b/src/energy.rs @@ -3,10 +3,12 @@ mod rapl; mod trackers; use std::collections::{BTreeSet, HashMap}; -use std::sync::{mpsc, Arc}; +use std::ops::RangeInclusive; +use std::sync::{mpsc, Arc, RwLock}; use std::thread; use std::time::Duration; +use crate::freq::FrequencyKHZ; use crate::Pid; use dashmap::DashMap; @@ -32,6 +34,9 @@ pub struct EnergyService { shared_budgets: Arc>, request_receiver: mpsc::Receiver, update_interval: Duration, + shared_cpu_frequency_ranges: Arc>>>, + shared_policy_frequency_ranges: Arc>>>, + shared_cpu_current_frequencies: Arc>>, } impl EnergyService { @@ -41,6 +46,9 @@ impl EnergyService { shared_budgets: Arc>, request_receiver: mpsc::Receiver, update_interval: Duration, + shared_cpu_frequency_ranges: Arc>>>, + shared_policy_frequency_ranges: Arc>>>, + shared_cpu_current_frequencies: Arc>>, ) -> Self { Self { estimator, @@ -50,6 +58,9 @@ impl EnergyService { shared_budgets, request_receiver, update_interval, + shared_cpu_frequency_ranges, + shared_policy_frequency_ranges, + shared_cpu_current_frequencies, } } @@ -152,6 +163,9 @@ pub fn start_energy_service( use_mocking: bool, power_cap: u64, shared_budgets: Arc>, + shared_cpu_frequency_ranges: Arc>>>, + shared_policy_frequency_ranges: Arc>>>, + shared_cpu_current_frequencies: Arc>>, ) -> std::io::Result> { // Potentially convert back to bounded channel let (request_sender, request_receiver) = mpsc::sync_channel(10000); @@ -176,6 +190,9 @@ pub fn start_energy_service( shared_budgets, request_receiver, Duration::from_millis(50), // 50ms update interval + shared_cpu_frequency_ranges, + shared_policy_frequency_ranges, + shared_cpu_current_frequencies, ); service.run(); -- cgit v1.3.1