diff options
| author | Lennard Kittner <lennard@kittner.dev> | 2025-03-23 17:12:25 +0100 |
|---|---|---|
| committer | Lennard Kittner <lennard@kittner.dev> | 2025-03-23 17:12:25 +0100 |
| commit | c2d63b96cbbd3be653fa0023fadae7df3babaf32 (patch) | |
| tree | 990c96aa93fd7aa92ac8ed55e70253fdb73c303c /src/energy.rs | |
| parent | 572abfe10bb3ee74e8138f71e75bee8d8cad7214 (diff) | |
Make Frequency Service available to rest of code
Diffstat (limited to 'src/energy.rs')
| -rw-r--r-- | src/energy.rs | 19 |
1 files changed, 18 insertions, 1 deletions
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<DashMap<Pid, u64>>, request_receiver: mpsc::Receiver<Request>, update_interval: Duration, + shared_cpu_frequency_ranges: Arc<RwLock<Vec<RangeInclusive<FrequencyKHZ>>>>, + shared_policy_frequency_ranges: Arc<RwLock<Vec<RangeInclusive<FrequencyKHZ>>>>, + shared_cpu_current_frequencies: Arc<RwLock<Vec<FrequencyKHZ>>>, } impl EnergyService { @@ -41,6 +46,9 @@ impl EnergyService { shared_budgets: Arc<DashMap<Pid, u64>>, request_receiver: mpsc::Receiver<Request>, update_interval: Duration, + shared_cpu_frequency_ranges: Arc<RwLock<Vec<RangeInclusive<FrequencyKHZ>>>>, + shared_policy_frequency_ranges: Arc<RwLock<Vec<RangeInclusive<FrequencyKHZ>>>>, + shared_cpu_current_frequencies: Arc<RwLock<Vec<FrequencyKHZ>>>, ) -> 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<DashMap<Pid, u64>>, + shared_cpu_frequency_ranges: Arc<RwLock<Vec<RangeInclusive<FrequencyKHZ>>>>, + shared_policy_frequency_ranges: Arc<RwLock<Vec<RangeInclusive<FrequencyKHZ>>>>, + shared_cpu_current_frequencies: Arc<RwLock<Vec<FrequencyKHZ>>>, ) -> std::io::Result<mpsc::SyncSender<Request>> { // 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(); |
