mirror of
https://github.com/LibreQoE/LibreQoS.git
synced 2025-02-25 18:55:32 -06:00
Change TCP retransmits counter to a DownUp
This commit is contained in:
parent
2675d56e6b
commit
ff97674885
@ -44,6 +44,10 @@ where T: std::cmp::Ord + num_traits::Zero + Copy + num_traits::CheckedSub
|
||||
self.down = self.down.checked_add(&down).unwrap_or(T::zero());
|
||||
self.up = self.up.checked_add(&up).unwrap_or(T::zero());
|
||||
}
|
||||
|
||||
pub fn sum(&self) -> T {
|
||||
self.down + self.up
|
||||
}
|
||||
}
|
||||
|
||||
impl <T> Into<UpDownOrder<T>> for DownUpOrder<T> {
|
||||
|
@ -198,7 +198,7 @@ fn retire_check(cycle: u64, recent_cycle: u64) -> bool {
|
||||
cycle < recent_cycle + RETIRE_AFTER_SECONDS
|
||||
}
|
||||
|
||||
type TopList = (XdpIpAddress, DownUpOrder<u64>,DownUpOrder<u64>, f32, TcHandle, String, (u64, u64));
|
||||
type TopList = (XdpIpAddress, DownUpOrder<u64>,DownUpOrder<u64>, f32, TcHandle, String, DownUpOrder<u64>);
|
||||
|
||||
pub fn top_n(start: u32, end: u32) -> BusResponse {
|
||||
let mut full_list: Vec<TopList> = {
|
||||
@ -244,7 +244,7 @@ pub fn top_n(start: u32, end: u32) -> BusResponse {
|
||||
packets_per_second: (packets.down, packets.up),
|
||||
median_tcp_rtt: *median_rtt,
|
||||
tc_handle: *tc_handle,
|
||||
tcp_retransmits: *tcp_retransmits,
|
||||
tcp_retransmits: (tcp_retransmits.down, tcp_retransmits.up),
|
||||
},
|
||||
)
|
||||
.collect();
|
||||
@ -296,7 +296,7 @@ pub fn worst_n(start: u32, end: u32) -> BusResponse {
|
||||
packets_per_second: (packets.down, packets.up),
|
||||
median_tcp_rtt: *median_rtt,
|
||||
tc_handle: *tc_handle,
|
||||
tcp_retransmits: *tcp_retransmits,
|
||||
tcp_retransmits: (tcp_retransmits.down, tcp_retransmits.up),
|
||||
},
|
||||
)
|
||||
.collect();
|
||||
@ -328,8 +328,8 @@ pub fn worst_n_retransmits(start: u32, end: u32) -> BusResponse {
|
||||
.collect()
|
||||
};
|
||||
full_list.sort_by(|a, b| {
|
||||
let total_a = a.6 .0 + a.6 .1;
|
||||
let total_b = b.6 .0 + b.6 .1;
|
||||
let total_a = a.6.sum();
|
||||
let total_b = b.6.sum();
|
||||
total_b.cmp(&total_a)
|
||||
});
|
||||
let result = full_list
|
||||
@ -352,7 +352,7 @@ pub fn worst_n_retransmits(start: u32, end: u32) -> BusResponse {
|
||||
packets_per_second: (packets.down, packets.up),
|
||||
median_tcp_rtt: *median_rtt,
|
||||
tc_handle: *tc_handle,
|
||||
tcp_retransmits: *tcp_retransmits,
|
||||
tcp_retransmits: (tcp_retransmits.down, tcp_retransmits.up),
|
||||
},
|
||||
)
|
||||
.collect();
|
||||
@ -405,7 +405,7 @@ pub fn best_n(start: u32, end: u32) -> BusResponse {
|
||||
packets_per_second: (packets.down, packets.up),
|
||||
median_tcp_rtt: *median_rtt,
|
||||
tc_handle: *tc_handle,
|
||||
tcp_retransmits: *tcp_retransmits,
|
||||
tcp_retransmits: (tcp_retransmits.down, tcp_retransmits.up),
|
||||
},
|
||||
)
|
||||
.collect();
|
||||
|
@ -18,8 +18,8 @@ pub(crate) struct ThroughputEntry {
|
||||
pub(crate) recent_rtt_data: [RttData; 60],
|
||||
pub(crate) last_fresh_rtt_data_cycle: u64,
|
||||
pub(crate) last_seen: u64, // Last seen in kernel time since boot
|
||||
pub(crate) tcp_retransmits: (u64, u64),
|
||||
pub(crate) last_tcp_retransmits: (u64, u64),
|
||||
pub(crate) tcp_retransmits: DownUpOrder<u64>,
|
||||
pub(crate) last_tcp_retransmits: DownUpOrder<u64>,
|
||||
}
|
||||
|
||||
impl ThroughputEntry {
|
||||
|
@ -147,8 +147,8 @@ impl ThroughputTracker {
|
||||
recent_rtt_data: [RttData::from_nanos(0); 60],
|
||||
last_fresh_rtt_data_cycle: 0,
|
||||
last_seen: 0,
|
||||
tcp_retransmits: (0, 0),
|
||||
last_tcp_retransmits: (0, 0),
|
||||
tcp_retransmits: DownUpOrder::zeroed(),
|
||||
last_tcp_retransmits: DownUpOrder::zeroed(),
|
||||
};
|
||||
for c in counts {
|
||||
entry.bytes.checked_add_direct(c.download_bytes, c.upload_bytes);
|
||||
@ -286,15 +286,15 @@ impl ThroughputTracker {
|
||||
// Merge in the TCP retries
|
||||
// Reset all entries in the tracker to 0
|
||||
for mut circuit in self.raw_data.iter_mut() {
|
||||
circuit.tcp_retransmits = (0, 0);
|
||||
circuit.tcp_retransmits = DownUpOrder::zeroed();
|
||||
}
|
||||
// Apply the new ones
|
||||
for (local_ip, retries) in tcp_retries {
|
||||
if let Some(mut tracker) = self.raw_data.get_mut(&local_ip) {
|
||||
tracker.tcp_retransmits.0 = retries[0].saturating_sub(tracker.last_tcp_retransmits.0);
|
||||
tracker.tcp_retransmits.1 = retries[1].saturating_sub(tracker.last_tcp_retransmits.1);
|
||||
tracker.last_tcp_retransmits.0 = retries[0];
|
||||
tracker.last_tcp_retransmits.1 = retries[1];
|
||||
tracker.tcp_retransmits.down = retries[0].saturating_sub(tracker.last_tcp_retransmits.down);
|
||||
tracker.tcp_retransmits.up = retries[1].saturating_sub(tracker.last_tcp_retransmits.up);
|
||||
tracker.last_tcp_retransmits.down = retries[0];
|
||||
tracker.last_tcp_retransmits.up = retries[1];
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user