From: Johannes Truschnigg Date: Tue, 15 Mar 2022 18:52:58 +0000 (+0100) Subject: Implement (faux) bw adjustment stubs X-Git-Url: https://johannes.truschnigg.info/gitweb/?a=commitdiff_plain;h=165283f4f64dc78826f9d6e58a5eeae4045b4724;p=sqm_lagthrottle Implement (faux) bw adjustment stubs --- diff --git a/__lagdetect.awk b/__lagdetect.awk index 691085b..827264d 100644 --- a/__lagdetect.awk +++ b/__lagdetect.awk @@ -6,8 +6,10 @@ BEGIN { print "# PINGSLOTS=" PINGSLOTS print "# BW_MAX=" BW_MAX print "# BW_MIN=" BW_MIN - print "# FILE_TX=" FILE_TX - print "# FILE_RX=" FILE_RX + print "# STATS_TX=" STATS_TX + print "# IFACE_TX=" IFACE_TX + print "# STATS_RX=" STATS_RX + print "# IFACE_RX=" IFACE_RX split(PING_PEERS, pps, " ") for (pp in pps) { pn = pps[pp] @@ -74,11 +76,11 @@ function update_bw() { tx_old=tx rx_old=rx - getline tx < FILE_TX - close(FILE_TX) + getline tx < STATS_TX + close(STATS_TX) - getline rx < FILE_RX - close(FILE_RX) + getline rx < STATS_RX + close(STATS_RX) rxdelta=(rx - rx_old) txdelta=(tx - tx_old) @@ -115,12 +117,16 @@ function adjust_bw(peername, latency) { if (last2avg > thresh_fudged ) { if (latency > ping_prev[peername] && latency > ping_pprev[peername]) { print ts " CONSIDER BW DECREASE # " peername " lat=" latency " prev=" ping_prev[peername] " pprev=" ping_pprev[peername] " avg=" ping_avgs[peername] " min=" ping_min[peername] + set_bw(IFACE_TX, 5000) + set_bw(IFACE_RX, 5000) } not_increasing_count[peername]=0 } else { if (not_increasing_count[peername] > (5 * PINGSLOTS)) { print ts " CONSIDER BW INCREASE # " peername " lat=" latency " prev=" ping_prev[peername] " pprev=" ping_pprev[peername] " avg=" ping_avgs[peername] " min=" ping_min[peername] not_increasing_count[peername]=0 + set_bw(IFACE_TX, 10000) + set_bw(IFACE_RX, 10000) } not_increasing_count[peername]++ } @@ -159,6 +165,12 @@ function update_ping_avgs(peername) { } +function set_bw(dev, kbit) { + print "# BW CHANGE dev=" dev " kbit=" kbit + system("echo tc qdisc change root dev " dev " cake bandwidth " kbit "Kbit") +} + + END { # Usually not reached. } diff --git a/lagdetect.sh b/lagdetect.sh index d9cd0e5..e68d07b 100755 --- a/lagdetect.sh +++ b/lagdetect.sh @@ -6,8 +6,10 @@ PING_GW_IPV4=no PING_GW_IPV6=no PING_SLOTS_PER_PEER=5 PING_INTERVAL=500 -FILE_RX='/sys/class/net/eth1/statistics/rx_bytes' -FILE_TX='/sys/class/net/eth1/statistics/tx_bytes' +STATS_RX='/sys/class/net/eth1/statistics/rx_bytes' +IFACE_RX='eth1' +STATS_TX='/sys/class/net/eth1/statistics/tx_bytes' +IFACE_TX='eth1' @@ -108,8 +110,10 @@ set -u fping --loop --retry=1 --size=1280 --period="${PING_INTERVAL}" --random ${PING_PEERS} 2>/dev/null \ | awk \ - -v FILE_RX="${FILE_RX}" \ - -v FILE_TX="${FILE_TX}" \ + -v STATS_RX="${STATS_RX}" \ + -v IFACE_RX="${IFACE_RX}" \ + -v STATS_TX="${STATS_TX}" \ + -v IFACE_TX="${IFACE_TX}" \ -v THRESHOLD="${THRESHOLD}" \ -v PINGSLOTS="${PING_SLOTS_PER_PEER}" \ -v FUDGE="${FUDGE_MS}" \