diff options
| author | Dennis Kobert <dennis@kobert.dev> | 2025-03-09 13:15:13 +0100 |
|---|---|---|
| committer | Dennis Kobert <dennis@kobert.dev> | 2025-03-09 13:15:13 +0100 |
| commit | b720a1253fb8cc8a3ba3454014bad239233368c1 (patch) | |
| tree | f1f7fa25edd5c47e3c30c4b984fa9d557409c7d7 /src/mock/perf.rs | |
| parent | 7b2ec191751489157a9e3193b8aeaabd72fae14a (diff) | |
Restructure project
Diffstat (limited to 'src/mock/perf.rs')
| -rw-r--r-- | src/mock/perf.rs | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/src/mock/perf.rs b/src/mock/perf.rs deleted file mode 100644 index 3dde836..0000000 --- a/src/mock/perf.rs +++ /dev/null @@ -1,60 +0,0 @@ -use std::collections::HashMap; - -use events::Event; -use perf_event::events::Hardware; -use perf_event::*; - -#[derive(Default)] -pub struct PerfEstimator { - registry: HashMap<u64, Counters>, -} - -struct Counters { - group: Group, - counters: Vec<Counter>, -} - -static EVENT_TYPES: &[(f32, Event)] = &[ - (1.0, Event::Hardware(Hardware::CPU_CYCLES)), - (2.0, Event::Hardware(Hardware::INSTRUCTIONS)), -]; - -impl super::KernelModule for PerfEstimator { - fn start_trace(&mut self, pid: u64) { - let Ok(mut group) = Group::new() else { - println!("failed to create Group"); - return; - }; - let counters = EVENT_TYPES - .iter() - .map(|(_, kind)| { - Builder::new() - .group(&mut group) - .kind(kind.clone()) - .build() - .unwrap() - }) - .collect(); - - group.enable().unwrap(); - let counters = Counters { counters, group }; - self.registry.insert(pid, counters); - } - - fn stop_trace(&mut self, pid: u64) { - self.registry.remove(&pid); - } - - fn read_consumption(&mut self, pid: u64) -> u64 { - let Some(counters) = self.registry.get_mut(&pid) else { - return 0; - }; - let mut sum = 0; - let counts = counters.group.read().unwrap(); - for ((factor, _ty), count) in EVENT_TYPES.iter().zip(counts.iter()) { - sum += *factor as u64 * count.1; - } - // dbg!(sum); - sum - } -} |
