Skip to content

Commit 10f677c

Browse files
committed
smooth temp / power values between updates #10
1 parent 7bfdaf4 commit 10f677c

File tree

4 files changed

+71
-39
lines changed

4 files changed

+71
-39
lines changed

Cargo.lock

Lines changed: 52 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ panic = "abort"
1313
strip = false
1414

1515
[dependencies]
16-
clap = { version = "4.5.20", features = ["derive"] }
16+
clap = { version = "4.5.21", features = ["derive"] }
1717
core-foundation = "0.10.0"
18-
libc = "0.2.161"
18+
libc = "0.2.166"
19+
num-traits = "0.2.19"
1920
ratatui = { version = "0.29.0", features = ["serde"] }
20-
serde = { version = "1.0.213", features = ["derive"] }
21-
serde_json = "1.0.132"
21+
serde = { version = "1.0.215", features = ["derive"] }
22+
serde_json = "1.0.133"

src/app.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@ struct PowerStore {
7575

7676
impl PowerStore {
7777
fn push(&mut self, value: f64) {
78+
let was_top = if self.items.len() > 0 { self.items[0] as f64 / 1000.0 } else { 0.0 };
7879
items_add(&mut self.items, (value * 1000.0) as u64);
79-
self.top_value = value;
80+
self.top_value = avg2(was_top, value);
8081
self.avg_value = self.items.iter().sum::<u64>() as f64 / self.items.len() as f64 / 1000.0;
8182
self.max_value = self.items.iter().max().map_or(0, |v| *v) as f64 / 1000.0;
8283
}
@@ -171,6 +172,12 @@ fn run_sampler_thread(tx: mpsc::Sender<Event>, interval: u64) {
171172
});
172173
}
173174

175+
// get avaerage of two values, used to smooth out metrics
176+
// see: https://github.com/vladkens/macmon/issues/10
177+
fn avg2<T: num_traits::Float>(a: T, b: T) -> T {
178+
return if a == T::zero() { b } else { (a + b) / T::from(2.0).unwrap() };
179+
}
180+
174181
// MARK: App
175182

176183
#[derive(Debug, Default)]
@@ -208,7 +215,10 @@ impl App {
208215
self.ecpu_freq.push(data.ecpu_usage.0 as u64, data.ecpu_usage.1 as f64);
209216
self.pcpu_freq.push(data.pcpu_usage.0 as u64, data.pcpu_usage.1 as f64);
210217
self.igpu_freq.push(data.gpu_usage.0 as u64, data.gpu_usage.1 as f64);
211-
self.temp = data.temp;
218+
219+
self.temp.cpu_temp_avg = avg2(self.temp.cpu_temp_avg, data.temp.cpu_temp_avg);
220+
self.temp.gpu_temp_avg = avg2(self.temp.gpu_temp_avg, data.temp.gpu_temp_avg);
221+
212222
self.mem.push(data.memory);
213223
}
214224

src/sources.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,8 @@ pub fn libc_ram() -> WithError<(u64, u64)> {
312312
let mut count: u32 = libc::HOST_VM_INFO64_COUNT as _;
313313
let mut stats = std::mem::zeroed::<libc::vm_statistics64>();
314314

315+
// todo: https://github.com/JohnTitor/mach2/issues/34
316+
#[allow(deprecated)]
315317
let ret_code = libc::host_statistics64(
316318
libc::mach_host_self(),
317319
libc::HOST_VM_INFO64,

0 commit comments

Comments
 (0)