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.down = self.down.checked_add(&down).unwrap_or(T::zero());
|
||||||
self.up = self.up.checked_add(&up).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> {
|
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
|
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 {
|
pub fn top_n(start: u32, end: u32) -> BusResponse {
|
||||||
let mut full_list: Vec<TopList> = {
|
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),
|
packets_per_second: (packets.down, packets.up),
|
||||||
median_tcp_rtt: *median_rtt,
|
median_tcp_rtt: *median_rtt,
|
||||||
tc_handle: *tc_handle,
|
tc_handle: *tc_handle,
|
||||||
tcp_retransmits: *tcp_retransmits,
|
tcp_retransmits: (tcp_retransmits.down, tcp_retransmits.up),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.collect();
|
.collect();
|
||||||
@ -296,7 +296,7 @@ pub fn worst_n(start: u32, end: u32) -> BusResponse {
|
|||||||
packets_per_second: (packets.down, packets.up),
|
packets_per_second: (packets.down, packets.up),
|
||||||
median_tcp_rtt: *median_rtt,
|
median_tcp_rtt: *median_rtt,
|
||||||
tc_handle: *tc_handle,
|
tc_handle: *tc_handle,
|
||||||
tcp_retransmits: *tcp_retransmits,
|
tcp_retransmits: (tcp_retransmits.down, tcp_retransmits.up),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.collect();
|
.collect();
|
||||||
@ -328,8 +328,8 @@ pub fn worst_n_retransmits(start: u32, end: u32) -> BusResponse {
|
|||||||
.collect()
|
.collect()
|
||||||
};
|
};
|
||||||
full_list.sort_by(|a, b| {
|
full_list.sort_by(|a, b| {
|
||||||
let total_a = a.6 .0 + a.6 .1;
|
let total_a = a.6.sum();
|
||||||
let total_b = b.6 .0 + b.6 .1;
|
let total_b = b.6.sum();
|
||||||
total_b.cmp(&total_a)
|
total_b.cmp(&total_a)
|
||||||
});
|
});
|
||||||
let result = full_list
|
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),
|
packets_per_second: (packets.down, packets.up),
|
||||||
median_tcp_rtt: *median_rtt,
|
median_tcp_rtt: *median_rtt,
|
||||||
tc_handle: *tc_handle,
|
tc_handle: *tc_handle,
|
||||||
tcp_retransmits: *tcp_retransmits,
|
tcp_retransmits: (tcp_retransmits.down, tcp_retransmits.up),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.collect();
|
.collect();
|
||||||
@ -405,7 +405,7 @@ pub fn best_n(start: u32, end: u32) -> BusResponse {
|
|||||||
packets_per_second: (packets.down, packets.up),
|
packets_per_second: (packets.down, packets.up),
|
||||||
median_tcp_rtt: *median_rtt,
|
median_tcp_rtt: *median_rtt,
|
||||||
tc_handle: *tc_handle,
|
tc_handle: *tc_handle,
|
||||||
tcp_retransmits: *tcp_retransmits,
|
tcp_retransmits: (tcp_retransmits.down, tcp_retransmits.up),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.collect();
|
.collect();
|
||||||
|
@ -18,8 +18,8 @@ pub(crate) struct ThroughputEntry {
|
|||||||
pub(crate) recent_rtt_data: [RttData; 60],
|
pub(crate) recent_rtt_data: [RttData; 60],
|
||||||
pub(crate) last_fresh_rtt_data_cycle: u64,
|
pub(crate) last_fresh_rtt_data_cycle: u64,
|
||||||
pub(crate) last_seen: u64, // Last seen in kernel time since boot
|
pub(crate) last_seen: u64, // Last seen in kernel time since boot
|
||||||
pub(crate) tcp_retransmits: (u64, u64),
|
pub(crate) tcp_retransmits: DownUpOrder<u64>,
|
||||||
pub(crate) last_tcp_retransmits: (u64, u64),
|
pub(crate) last_tcp_retransmits: DownUpOrder<u64>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ThroughputEntry {
|
impl ThroughputEntry {
|
||||||
|
@ -147,8 +147,8 @@ impl ThroughputTracker {
|
|||||||
recent_rtt_data: [RttData::from_nanos(0); 60],
|
recent_rtt_data: [RttData::from_nanos(0); 60],
|
||||||
last_fresh_rtt_data_cycle: 0,
|
last_fresh_rtt_data_cycle: 0,
|
||||||
last_seen: 0,
|
last_seen: 0,
|
||||||
tcp_retransmits: (0, 0),
|
tcp_retransmits: DownUpOrder::zeroed(),
|
||||||
last_tcp_retransmits: (0, 0),
|
last_tcp_retransmits: DownUpOrder::zeroed(),
|
||||||
};
|
};
|
||||||
for c in counts {
|
for c in counts {
|
||||||
entry.bytes.checked_add_direct(c.download_bytes, c.upload_bytes);
|
entry.bytes.checked_add_direct(c.download_bytes, c.upload_bytes);
|
||||||
@ -286,15 +286,15 @@ impl ThroughputTracker {
|
|||||||
// Merge in the TCP retries
|
// Merge in the TCP retries
|
||||||
// Reset all entries in the tracker to 0
|
// Reset all entries in the tracker to 0
|
||||||
for mut circuit in self.raw_data.iter_mut() {
|
for mut circuit in self.raw_data.iter_mut() {
|
||||||
circuit.tcp_retransmits = (0, 0);
|
circuit.tcp_retransmits = DownUpOrder::zeroed();
|
||||||
}
|
}
|
||||||
// Apply the new ones
|
// Apply the new ones
|
||||||
for (local_ip, retries) in tcp_retries {
|
for (local_ip, retries) in tcp_retries {
|
||||||
if let Some(mut tracker) = self.raw_data.get_mut(&local_ip) {
|
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.down = retries[0].saturating_sub(tracker.last_tcp_retransmits.down);
|
||||||
tracker.tcp_retransmits.1 = retries[1].saturating_sub(tracker.last_tcp_retransmits.1);
|
tracker.tcp_retransmits.up = retries[1].saturating_sub(tracker.last_tcp_retransmits.up);
|
||||||
tracker.last_tcp_retransmits.0 = retries[0];
|
tracker.last_tcp_retransmits.down = retries[0];
|
||||||
tracker.last_tcp_retransmits.1 = retries[1];
|
tracker.last_tcp_retransmits.up = retries[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user