summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2025-03-10 21:36:30 +0100
committerDennis Kobert <dennis@kobert.dev>2025-03-25 15:52:04 +0100
commit776dee32aca73ded5c0720afbe25ef2aae7b67f3 (patch)
tree1e4c8b9bde5c944869134e0ed751315efe09198a /src/main.rs
parentc2d63b96cbbd3be653fa0023fadae7df3babaf32 (diff)
Implement benchmarking
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
index d3c9628..f3d4992 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,7 +1,9 @@
mod bpf_skel;
+use benchmark::BenchmarkScheduler;
pub use bpf_skel::*;
pub mod bpf_intf;
+mod benchmark;
mod e_core_selector;
mod energy;
mod freq;
@@ -28,6 +30,14 @@ fn main() -> Result<()> {
.required(false),
)
.arg(
+ Arg::new("benchmark")
+ .short('b')
+ .long("benchmark")
+ .help("Use this flag to enable benckmarking mode")
+ .action(ArgAction::SetTrue)
+ .required(false),
+ )
+ .arg(
Arg::new("power_cap")
.long("energy_cap")
.help("Set a power cap for the processor")
@@ -38,9 +48,16 @@ fn main() -> Result<()> {
let power_cap = *matches.get_one::<u64>("power_cap").unwrap_or(&u64::MAX);
let use_mocking = matches.get_flag("mock");
+ let benchmark = matches.get_flag("benchmark");
// Initialize and load the scheduler.
let mut open_object = MaybeUninit::uninit();
+ let log_path = "logs.csv";
+ if benchmark {
+ let mut sched = BenchmarkScheduler::init(&mut open_object, log_path)?;
+ sched.run();
+ return Ok(());
+ }
loop {
let mut sched = Scheduler::init(&mut open_object, use_mocking, power_cap)?;
if !sched.run()?.should_restart() {