summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2025-04-15 13:56:29 +0200
committerDennis Kobert <dennis@kobert.dev>2025-04-15 13:56:29 +0200
commit1e05cd3bf6896ad4da7420c6914c1381714cdf43 (patch)
tree4d9cd0227ccc66808b63f3e1f0489ca654e343db
parentfecda0a5b5d0db9a18eb4ba6f3bc2e9875b9b1f2 (diff)
Show energy limit as historical graph
-rw-r--r--energy-monitor/src/main.rs9
-rw-r--r--energy-monitor/src/process.rs11
-rw-r--r--energy-monitor/src/ui.rs2
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))