From 008e05b726459765665016d885e19ad07aba5398 Mon Sep 17 00:00:00 2001 From: RGBCube Date: Wed, 4 Jun 2025 20:42:15 +0300 Subject: [PATCH] cpu: use only recent cpu log entries for calculating volatility --- src/daemon.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/daemon.rs b/src/daemon.rs index 35ddbed..fc1a6a5 100644 --- a/src/daemon.rs +++ b/src/daemon.rs @@ -1,6 +1,5 @@ use std::{ collections::VecDeque, - ops, sync::{ Arc, atomic::{AtomicBool, Ordering}, @@ -114,8 +113,6 @@ struct CpuLog { } struct CpuVolatility { - at: ops::Range, - usage: f64, temperature: f64, @@ -123,6 +120,17 @@ struct CpuVolatility { impl Daemon { fn cpu_volatility(&self) -> Option { + let recent_log_count = self + .cpu_log + .iter() + .rev() + .take_while(|log| log.at.elapsed() < Duration::from_secs(5 * 60)) + .count(); + + if recent_log_count < 2 { + return None; + } + if self.cpu_log.len() < 2 { return None; } @@ -142,8 +150,6 @@ impl Daemon { } Some(CpuVolatility { - at: self.cpu_log.front().unwrap().at..self.cpu_log.back().unwrap().at, - usage: usage_change_sum / change_count as f64, temperature: temperature_change_sum / change_count as f64, })