diff options
author | Dennis Kobert <dennis@kobert.dev> | 2025-04-15 13:56:29 +0200 |
---|---|---|
committer | Dennis Kobert <dennis@kobert.dev> | 2025-04-15 13:56:29 +0200 |
commit | 1e05cd3bf6896ad4da7420c6914c1381714cdf43 (patch) | |
tree | 4d9cd0227ccc66808b63f3e1f0489ca654e343db | |
parent | fecda0a5b5d0db9a18eb4ba6f3bc2e9875b9b1f2 (diff) |
Show energy limit as historical graph
-rw-r--r-- | energy-monitor/src/main.rs | 9 | ||||
-rw-r--r-- | energy-monitor/src/process.rs | 11 | ||||
-rw-r--r-- | energy-monitor/src/ui.rs | 2 |
3 files changed, 8 insertions, 14 deletions
diff --git a/energy-monitor/src/main.rs b/energy-monitor/src/main.rs index 26bf3d6..bee367a 100644 --- a/energy-monitor/src/main.rs +++ b/energy-monitor/src/main.rs @@ -41,6 +41,7 @@ struct App { available_colors: Vec<Color>, color_index: usize, last_update: Instant, + startup_time: Instant, should_quit: bool, power_limit: f64, power_limit_history: Vec<(f64, f64)>, @@ -64,8 +65,9 @@ impl App { Color::LightCyan, ]; + let process_data = ProcessData::new(); let mut app = Self { - process_data: ProcessData::new(), + process_data, selected_tab: AppTab::ProcessList, table_state: ListState::default(), selected_processes: HashSet::new(), @@ -73,9 +75,10 @@ impl App { available_colors, color_index: 0, last_update: Instant::now(), + startup_time: Instant::now(), should_quit: false, power_limit: DEFAULT_POWER_LIMIT, - power_limit_history: vec![], + power_limit_history: vec![(0., DEFAULT_POWER_LIMIT)], }; // Start with the first process selected @@ -88,6 +91,8 @@ impl App { fn on_tick(&mut self) { if self.last_update.elapsed() >= UPDATE_INTERVAL { self.process_data.update(); + self.power_limit_history + .push((self.startup_time.elapsed().as_secs_f64(), self.power_limit)); self.last_update = Instant::now(); // Make sure our selection is still valid after the update diff --git a/energy-monitor/src/process.rs b/energy-monitor/src/process.rs index b9d00fd..702c191 100644 --- a/energy-monitor/src/process.rs +++ b/energy-monitor/src/process.rs @@ -85,16 +85,7 @@ impl ProcessData { let total_energy = rapl_energy - self.rapl_offset; self.rapl_offset = rapl_energy; - self.add_total_energy_point( - elapsed, - (total_energy - + self - .total_energy_history - .last() - .map(|(_, x)| x) - .unwrap_or(&total_energy)) - * 0.5, - ); + self.add_total_energy_point(elapsed, total_energy); } fn add_total_energy_point(&mut self, timestamp: f64, energy: f64) { diff --git a/energy-monitor/src/ui.rs b/energy-monitor/src/ui.rs index b35c619..ea51591 100644 --- a/energy-monitor/src/ui.rs +++ b/energy-monitor/src/ui.rs @@ -332,8 +332,6 @@ fn draw_energy_graph(f: &mut Frame, app: &mut App, area: Rect) { // Add power limit line as a horizontal line across the chart if app.power_limit > 0.0 { - let limit_data = vec![(start_time, app.power_limit), (end_time, app.power_limit)]; - app.power_limit_history = limit_data; datasets.push( Dataset::default() .name(format!("Power Limit ({:.1}W)", app.power_limit)) |