move util functions into respective modules

This commit is contained in:
Nils Andreas Svee committed 2022-10-19 21:23:52 +02:00
1 parent 1c38d8ff48
commit befccc0d6f
4 files changed
+11 -20

No files matched your search

+6 -3
View File
@@ -1,5 +1,4 @@
use crate::pinger::PingReply; use crate::pinger::PingReply;
use crate::utils::Utils;
use crate::Config; use crate::Config;
use log::info; use log::info;
use std::collections::HashMap; use std::collections::HashMap;
@@ -22,6 +21,10 @@ pub struct Baseliner {
pub stats_receiver: Receiver<PingReply>, pub stats_receiver: Receiver<PingReply>,
} }
fn ewma_factor(tick: f64, dur: f64) -> f64 {
((0.5_f64).ln() / (dur / tick)).exp()
}
impl Baseliner { impl Baseliner {
pub fn run(&self) -> anyhow::Result<()> { pub fn run(&self) -> anyhow::Result<()> {
/* /*
@@ -32,8 +35,8 @@ impl Baseliner {
* aren't bloat related, with less sensitivity (bigger numbers) we smooth through quick spikes * aren't bloat related, with less sensitivity (bigger numbers) we smooth through quick spikes
* but take longer to respond to real bufferbloat * but take longer to respond to real bufferbloat
*/ */
let slow_factor = Utils::ewma_factor(self.config.tick_interval, 135.0); let slow_factor = ewma_factor(self.config.tick_interval, 135.0);
let fast_factor = Utils::ewma_factor(self.config.tick_interval, 0.4); let fast_factor = ewma_factor(self.config.tick_interval, 0.4);
loop { loop {
let time_data = self.stats_receiver.recv()?; let time_data = self.stats_receiver.recv()?;
-1
View File
@@ -12,7 +12,6 @@ mod pinger_icmp;
mod pinger_icmp_ts; mod pinger_icmp_ts;
mod ratecontroller; mod ratecontroller;
mod reflector_selector; mod reflector_selector;
mod utils;
use crate::baseliner::{Baseliner, ReflectorStats}; use crate::baseliner::{Baseliner, ReflectorStats};
use ::log::debug; use ::log::debug;
+5 -2
View File
@@ -1,6 +1,5 @@
use crate::clock::Clock; use crate::clock::Clock;
use crate::netlink::{Netlink, NetlinkError, Qdisc}; use crate::netlink::{Netlink, NetlinkError, Qdisc};
use crate::utils::Utils;
use crate::{Config, ReflectorStats}; use crate::{Config, ReflectorStats};
use log::{debug, error, info, warn}; use log::{debug, error, info, warn};
use rand::seq::SliceRandom; use rand::seq::SliceRandom;
@@ -120,7 +119,11 @@ impl Ratecontroller {
if state.deltas.len() < 3 { if state.deltas.len() < 3 {
state.next_rate = min_rate; state.next_rate = min_rate;
} else { } else {
state.delta_stat = Utils::a_else_b(state.deltas[2], state.deltas[0]); state.delta_stat = if state.deltas[2] > 0.0 {
state.deltas[2]
} else {
state.deltas[0]
};
if state.delta_stat > 0.0 { if state.delta_stat > 0.0 {
/* /*
-14
View File
@@ -1,14 +0,0 @@
pub struct Utils {}
impl Utils {
pub fn a_else_b(a: f64, b: f64) -> f64 {
if a > 0.0 {
a
} else {
b
}
}
pub fn ewma_factor(tick: f64, dur: f64) -> f64 {
((0.5_f64).ln() / (dur / tick)).exp()
}
}