summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennard Kittner <lennard@kittner.dev>2025-03-30 19:29:21 +0200
committerLennard Kittner <lennard@kittner.dev>2025-03-30 19:29:38 +0200
commit8d600e7536f6319c3e06fb26fc44dcfd38601439 (patch)
treeb8eb0910510424914f0a5bf89f25c3fe2d8e4162
parent957572b08929e88734201933b316b0a7c42b2458 (diff)
timing changes
budget bug fix
-rw-r--r--src/scheduler.rs14
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);
}
}