diff options
author | Lennard Kittner <lennard@kittner.dev> | 2025-03-30 19:29:21 +0200 |
---|---|---|
committer | Lennard Kittner <lennard@kittner.dev> | 2025-03-30 19:29:38 +0200 |
commit | 8d600e7536f6319c3e06fb26fc44dcfd38601439 (patch) | |
tree | b8eb0910510424914f0a5bf89f25c3fe2d8e4162 | |
parent | 957572b08929e88734201933b316b0a7c42b2458 (diff) |
timing changes
budget bug fix
-rw-r--r-- | src/scheduler.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/scheduler.rs b/src/scheduler.rs index 0a83b12..fc4d448 100644 --- a/src/scheduler.rs +++ b/src/scheduler.rs @@ -18,7 +18,7 @@ use std::time::{Duration, Instant}; use crate::Pid; -const SLICE_US: u64 = 50000; +const SLICE_US: u64 = 100000; pub struct Scheduler<'a> { bpf: BpfScheduler<'a>, @@ -106,7 +106,7 @@ impl<'a> Scheduler<'a> { shared_cpu_frequency_ranges.clone(), shared_policy_frequency_ranges.clone(), shared_cpu_current_frequencies.clone(), - Duration::from_millis(1), + Duration::from_millis(30), )?; frequency_sender @@ -174,15 +174,15 @@ impl<'a> Scheduler<'a> { e.insert(Instant::now()); // New task - register it with the energy service self.energy_sender - .try_send(EnergyRequest::NewTask(task.pid)) + .try_send(EnergyRequest::NewTask(task.pid, task.cpu)) .unwrap(); } // Get current budget for this task match self.shared_budgets.try_get(&task.pid) { dashmap::try_result::TryResult::Present(budget) => match *budget { - 0 => self.task_queue.push_back(task), - _ => self.no_budget_task_queue.push_back(task), + 0 => self.no_budget_task_queue.push_back(task), + _ => self.task_queue.push_back(task), }, _ => self.task_queue.push_back(task), } @@ -192,7 +192,7 @@ impl<'a> Scheduler<'a> { fn dispatch_next_task(&mut self) { if let Some(task) = self.task_queue.pop_front() { let mut dispatched_task = DispatchedTask::new(&task); - + //TODO: do we have to migrate tasks back from e cores? self.managed_tasks.insert(task.pid, Instant::now()); let cpu = self.bpf.select_cpu(task.pid, task.cpu, 0); @@ -254,7 +254,7 @@ impl<'a> Scheduler<'a> { fn cleanup_old_tasks(&mut self) { let current = Instant::now(); for (pid, last_scheduled) in &self.managed_tasks { - if current - *last_scheduled > Duration::from_secs(500) { + if current - *last_scheduled > Duration::from_secs(5) { self.to_remove.push(*pid); } } |