diff options
Diffstat (limited to 'src/energy.rs')
-rw-r--r-- | src/energy.rs | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/energy.rs b/src/energy.rs index 754ecac..8d479ae 100644 --- a/src/energy.rs +++ b/src/energy.rs @@ -28,9 +28,9 @@ pub enum Request { } pub struct TaskInfo { pub cpu: AtomicI32, - pub budget: AtomicI64, + pub budget_mj: AtomicI64, pub last_total_runtime: AtomicU64, - pub power_draw: AtomicU64, + pub power_draw_mw: AtomicU64, pub running_on_e_core: AtomicBool, pub last_scheduled: AtomicI64, } @@ -40,7 +40,7 @@ impl TaskInfo { self.cpu.load(Relaxed) } pub fn read_budget(&self) -> i64 { - self.budget.load(Relaxed) + self.budget_mj.load(Relaxed) } pub fn read_time_since_last_schedule(&self) -> Option<Duration> { let old_time = self.last_scheduled.load(Relaxed); @@ -65,11 +65,11 @@ impl TaskInfo { self.last_scheduled.store(last_scheduled, Relaxed); } pub fn set_budget(&self, budget: i64) { - self.budget.store(budget, Relaxed); + self.budget_mj.store(budget, Relaxed); } pub fn add_budget(&self, budget: i64) { - self.budget.fetch_add(budget, Relaxed); - self.budget.fetch_min(budget::MAX_BUDGET_MJ, Relaxed); + self.budget_mj.fetch_add(budget, Relaxed); + self.budget_mj.fetch_min(budget::MAX_BUDGET_MJ, Relaxed); } pub fn set_running_on_e_core(&self, running_on_e_core: bool) { self.running_on_e_core.store(running_on_e_core, Relaxed); @@ -78,16 +78,16 @@ impl TaskInfo { new_running_time - self.last_total_runtime.swap(new_running_time, Relaxed) } pub fn update_budget(&self, running_time: Duration) -> i64 { - let power_draw = self.power_draw.load(Relaxed); - self.budget.fetch_sub( + let power_draw = self.power_draw_mw.load(Relaxed); + self.budget_mj.fetch_sub( (power_draw as f64 * running_time.as_secs_f64()) as i64, Relaxed, ); - self.budget.fetch_max(-budget::MAX_BUDGET_MJ, Relaxed) + self.budget_mj.fetch_max(-budget::MAX_BUDGET_MJ, Relaxed) } // Set powerdraw in milli watt pub fn set_power_draw(&self, power_draw_mw: u64) { - self.power_draw.store(power_draw_mw, Relaxed); + self.power_draw_mw.store(power_draw_mw, Relaxed); } } @@ -95,11 +95,11 @@ impl Default for TaskInfo { fn default() -> Self { Self { cpu: Default::default(), - budget: AtomicI64::new(budget::MAX_BUDGET_MJ), + budget_mj: AtomicI64::new(budget::MAX_BUDGET_MJ), last_total_runtime: Default::default(), running_on_e_core: Default::default(), last_scheduled: AtomicI64::new(-1), - power_draw: AtomicU64::new(DEFAULT_POWER_DRAW_MW), + power_draw_mw: AtomicU64::new(DEFAULT_POWER_DRAW_MW), } } } @@ -260,7 +260,6 @@ impl EnergyService { .map(|info| info.tree_energy_j) .unwrap_or(0.); let elapsed = self.last_measurement.elapsed(); - let mut i = 0; for pid in &self.active_processes { let mut process_info = self.process_info.write().unwrap(); if let Some(info) = process_info.get_mut(pid) { |