about summary refs log tree commit diff
path: root/src/gatherer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/gatherer.rs')
-rw-r--r--src/gatherer.rs37
1 files changed, 27 insertions, 10 deletions
diff --git a/src/gatherer.rs b/src/gatherer.rs
index 0cceea6..b1fa416 100644
--- a/src/gatherer.rs
+++ b/src/gatherer.rs
@@ -1,7 +1,7 @@
 use std::{
 	fs::File,
 	io::{BufRead, BufReader},
-	sync::mpsc::Sender,
+	sync::{atomic::Ordering, mpsc::Sender},
 	thread::JoinHandle,
 	time::Duration,
 };
@@ -78,7 +78,11 @@ pub fn make_mem_graph(state: &AwakeState) {
 
 	let infos = state.database.get_last_n_host_meminfo(256);
 	let max = infos[0].total_kb;
-	let usages: Vec<usize> = infos.into_iter().map(|mi| mi.usage()).collect();
+	let mut usages: Vec<usize> = infos.into_iter().map(|mi| mi.usage()).collect();
+
+	// Reversing here because we want latest valeus on on the
+	// right side, so last in the array
+	usages.reverse();
 
 	let gif = griph::make_1line(0, max, &usages);
 
@@ -90,20 +94,33 @@ pub fn make_net_graph(state: &AwakeState) {
 	tracing::debug!("generating netinfo graph");
 
 	let infos = state.database.get_last_n_hostnet(256);
-	let rx_deltas: Vec<usize> = infos
+	// 125 is (1000 / 8) so it converst Bytes to kiloBITS
+	let mut rx_deltas: Vec<usize> = infos
 		.iter()
-		.map(|ni| ni.rx_bytes_per_sec() as usize / 1000)
+		.map(|ni| ni.rx_bytes_per_sec() as usize / 124)
 		.collect();
-	let tx_deltas: Vec<usize> = infos
+	let mut tx_deltas: Vec<usize> = infos
 		.iter()
-		.map(|ni| ni.tx_bytes_per_sec() as usize / 1000)
+		.map(|ni| ni.tx_bytes_per_sec() as usize / 125)
 		.collect();
 
-	for ahh in &tx_deltas {
-		tracing::trace!("ahh: {ahh} kbytes");
-	}
+	// Reversing to put latest values on the right side
+	rx_deltas.reverse();
+	tx_deltas.reverse();
+
+	// Mixing the TX/RX delta so we can pick a range.
+	let mut mixed = vec![0; 512];
+	mixed[..256].copy_from_slice(&rx_deltas);
+	mixed[256..].copy_from_slice(&tx_deltas);
+
+	mixed.sort();
+	let kinda_highest = mixed[511 - 32];
+	let high_bound = (kinda_highest as f32 / 256.0).ceil().min(1.0) as usize * 256;
+	state
+		.netinfo_upper_bound
+		.store(high_bound, Ordering::Release);
 
-	let gif = griph::make_2line(0, 1000, &rx_deltas, &tx_deltas);
+	let gif = griph::make_2line(0, high_bound, &tx_deltas, &rx_deltas);
 
 	let path = state.cache_path.join("current_hostnetinfo.gif");
 	gif.save(path).unwrap();