Apply the atomic u64 pair to the rest of ThroughputTracker

This commit is contained in:
Herbert Wolverson 2024-07-01 15:33:54 -05:00
parent fd8fbc43c2
commit 5a69ca5ea8
2 changed files with 16 additions and 17 deletions

View File

@ -131,13 +131,9 @@ async fn submit_throughput_stats(long_term_stats_tx: Sender<StatsUpdateMessage>)
// Gather Global Stats // Gather Global Stats
let packets_per_second = ( let packets_per_second = (
THROUGHPUT_TRACKER THROUGHPUT_TRACKER
.packets_per_second .packets_per_second.get_down(),
.0
.load(std::sync::atomic::Ordering::Relaxed),
THROUGHPUT_TRACKER THROUGHPUT_TRACKER
.packets_per_second .packets_per_second.get_up(),
.1
.load(std::sync::atomic::Ordering::Relaxed),
); );
let bits_per_second = THROUGHPUT_TRACKER.bits_per_second(); let bits_per_second = THROUGHPUT_TRACKER.bits_per_second();
let shaped_bits_per_second = THROUGHPUT_TRACKER.shaped_bits_per_second(); let shaped_bits_per_second = THROUGHPUT_TRACKER.shaped_bits_per_second();

View File

@ -12,8 +12,8 @@ pub struct ThroughputTracker {
pub(crate) cycle: AtomicU64, pub(crate) cycle: AtomicU64,
pub(crate) raw_data: DashMap<XdpIpAddress, ThroughputEntry>, pub(crate) raw_data: DashMap<XdpIpAddress, ThroughputEntry>,
pub(crate) bytes_per_second: AtomicDownUp, pub(crate) bytes_per_second: AtomicDownUp,
pub(crate) packets_per_second: (AtomicU64, AtomicU64), pub(crate) packets_per_second: AtomicDownUp,
pub(crate) shaped_bytes_per_second: (AtomicU64, AtomicU64), pub(crate) shaped_bytes_per_second: AtomicDownUp,
} }
impl ThroughputTracker { impl ThroughputTracker {
@ -25,8 +25,8 @@ impl ThroughputTracker {
cycle: AtomicU64::new(RETIRE_AFTER_SECONDS), cycle: AtomicU64::new(RETIRE_AFTER_SECONDS),
raw_data: DashMap::with_capacity(lqos_sys::max_tracked_ips()), raw_data: DashMap::with_capacity(lqos_sys::max_tracked_ips()),
bytes_per_second: AtomicDownUp::zeroed(), bytes_per_second: AtomicDownUp::zeroed(),
packets_per_second: (AtomicU64::new(0), AtomicU64::new(0)), packets_per_second: AtomicDownUp::zeroed(),
shaped_bytes_per_second: (AtomicU64::new(0), AtomicU64::new(0)), shaped_bytes_per_second: AtomicDownUp::zeroed(),
} }
} }
@ -353,8 +353,8 @@ impl ThroughputTracker {
pub(crate) fn update_totals(&self) { pub(crate) fn update_totals(&self) {
let current_cycle = self.cycle.load(std::sync::atomic::Ordering::Relaxed); let current_cycle = self.cycle.load(std::sync::atomic::Ordering::Relaxed);
self.bytes_per_second.set_to_zero(); self.bytes_per_second.set_to_zero();
Self::set_atomic_tuple_to_zero(&self.packets_per_second); self.packets_per_second.set_to_zero();
Self::set_atomic_tuple_to_zero(&self.shaped_bytes_per_second); self.shaped_bytes_per_second.set_to_zero();
self self
.raw_data .raw_data
.iter() .iter()
@ -373,9 +373,9 @@ impl ThroughputTracker {
}) })
.for_each(|(bytes_down, bytes_up, packets_down, packets_up, shaped)| { .for_each(|(bytes_down, bytes_up, packets_down, packets_up, shaped)| {
self.bytes_per_second.checked_add_tuple((bytes_down, bytes_up)); 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 { 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) { 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) { pub(crate) fn packets_per_second(&self) -> (u64, u64) {
( (
self.packets_per_second.0.load(std::sync::atomic::Ordering::Relaxed), self.packets_per_second.get_down(),
self.packets_per_second.1.load(std::sync::atomic::Ordering::Relaxed), self.packets_per_second.get_up(),
) )
} }