From 5a69ca5ea8715301b7d16cda214ae75b3f02a7ef Mon Sep 17 00:00:00 2001 From: Herbert Wolverson Date: Mon, 1 Jul 2024 15:33:54 -0500 Subject: [PATCH] Apply the atomic u64 pair to the rest of ThroughputTracker --- src/rust/lqosd/src/throughput_tracker/mod.rs | 8 ++---- .../src/throughput_tracker/tracking_data.rs | 25 +++++++++++-------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/rust/lqosd/src/throughput_tracker/mod.rs b/src/rust/lqosd/src/throughput_tracker/mod.rs index 0e5f81e9..d9e6cc9a 100644 --- a/src/rust/lqosd/src/throughput_tracker/mod.rs +++ b/src/rust/lqosd/src/throughput_tracker/mod.rs @@ -131,13 +131,9 @@ async fn submit_throughput_stats(long_term_stats_tx: Sender) // Gather Global Stats let packets_per_second = ( THROUGHPUT_TRACKER - .packets_per_second - .0 - .load(std::sync::atomic::Ordering::Relaxed), + .packets_per_second.get_down(), THROUGHPUT_TRACKER - .packets_per_second - .1 - .load(std::sync::atomic::Ordering::Relaxed), + .packets_per_second.get_up(), ); let bits_per_second = THROUGHPUT_TRACKER.bits_per_second(); let shaped_bits_per_second = THROUGHPUT_TRACKER.shaped_bits_per_second(); diff --git a/src/rust/lqosd/src/throughput_tracker/tracking_data.rs b/src/rust/lqosd/src/throughput_tracker/tracking_data.rs index d536f007..d4b8639e 100644 --- a/src/rust/lqosd/src/throughput_tracker/tracking_data.rs +++ b/src/rust/lqosd/src/throughput_tracker/tracking_data.rs @@ -12,8 +12,8 @@ pub struct ThroughputTracker { pub(crate) cycle: AtomicU64, pub(crate) raw_data: DashMap, pub(crate) bytes_per_second: AtomicDownUp, - pub(crate) packets_per_second: (AtomicU64, AtomicU64), - pub(crate) shaped_bytes_per_second: (AtomicU64, AtomicU64), + pub(crate) packets_per_second: AtomicDownUp, + pub(crate) shaped_bytes_per_second: AtomicDownUp, } impl ThroughputTracker { @@ -25,8 +25,8 @@ impl ThroughputTracker { cycle: AtomicU64::new(RETIRE_AFTER_SECONDS), raw_data: DashMap::with_capacity(lqos_sys::max_tracked_ips()), bytes_per_second: AtomicDownUp::zeroed(), - packets_per_second: (AtomicU64::new(0), AtomicU64::new(0)), - shaped_bytes_per_second: (AtomicU64::new(0), AtomicU64::new(0)), + packets_per_second: AtomicDownUp::zeroed(), + shaped_bytes_per_second: AtomicDownUp::zeroed(), } } @@ -353,8 +353,8 @@ impl ThroughputTracker { pub(crate) fn update_totals(&self) { let current_cycle = self.cycle.load(std::sync::atomic::Ordering::Relaxed); self.bytes_per_second.set_to_zero(); - Self::set_atomic_tuple_to_zero(&self.packets_per_second); - Self::set_atomic_tuple_to_zero(&self.shaped_bytes_per_second); + self.packets_per_second.set_to_zero(); + self.shaped_bytes_per_second.set_to_zero(); self .raw_data .iter() @@ -373,9 +373,9 @@ impl ThroughputTracker { }) .for_each(|(bytes_down, bytes_up, packets_down, packets_up, shaped)| { self.bytes_per_second.checked_add_tuple((bytes_down, bytes_up)); - Self::add_atomic_tuple(&self.packets_per_second, (packets_down, packets_up)); + self.packets_per_second.checked_add_tuple((packets_down, packets_up)); if shaped { - Self::add_atomic_tuple(&self.shaped_bytes_per_second, (bytes_down, bytes_up)); + self.shaped_bytes_per_second.checked_add_tuple((bytes_down, bytes_up)); } }); @@ -406,13 +406,16 @@ impl ThroughputTracker { } pub(crate) fn shaped_bits_per_second(&self) -> (u64, u64) { - (self.shaped_bytes_per_second.0.load(std::sync::atomic::Ordering::Relaxed) * 8, self.shaped_bytes_per_second.1.load(std::sync::atomic::Ordering::Relaxed) * 8) + ( + self.shaped_bytes_per_second.get_down() * 8, + self.shaped_bytes_per_second.get_up() * 8 + ) } pub(crate) fn packets_per_second(&self) -> (u64, u64) { ( - self.packets_per_second.0.load(std::sync::atomic::Ordering::Relaxed), - self.packets_per_second.1.load(std::sync::atomic::Ordering::Relaxed), + self.packets_per_second.get_down(), + self.packets_per_second.get_up(), ) }