From: Johannes Truschnigg Date: Tue, 15 Mar 2022 21:16:22 +0000 (+0100) Subject: Update formatting, reduce debug output X-Git-Url: https://johannes.truschnigg.info/gitweb/?a=commitdiff_plain;h=276f8f40dd192a23325d6834073ac5c581b6606d;p=sqm_lagthrottle Update formatting, reduce debug output --- diff --git a/__lagdetect.awk b/__lagdetect.awk index 38a090d..9c0f1b2 100644 --- a/__lagdetect.awk +++ b/__lagdetect.awk @@ -15,14 +15,15 @@ BEGIN { for (pp in pps) { pn = pps[pp] print "# PEERS+=" pn - slotindex[pn]=0 # used to cycle thru PINGSLOTS per PEER - have_baseline[pn]=0 # do we have enough data to make informed decisions? - ping_min[pn]=65535 # minimum latency observed for PEER - ping_avgs[pn]=-1 # mean of last PINGSLOTS recorded latencies per PEER - ping_prev[pn]=-1 # latency recorded in the previous cycle - ping_pprev[pn]=-1 # latency recorded in the previous cycle - not_increasing_count[pn]=0 # number of consecutive cycles with no (fudged) latency increase + slotindex[pn] = 0 # used to cycle thru PINGSLOTS per PEER + have_baseline[pn] = 0 # do we have enough data to make informed decisions? + ping_min[pn] = 65535 # minimum latency observed for PEER + ping_avgs[pn] = -1 # mean of last PINGSLOTS recorded latencies per PEER + ping_prev[pn] = -1 # latency recorded in the previous cycle + ping_pprev[pn] = -1 # latency recorded in the previous cycle + not_increasing_count[pn] = 0 # number of consecutive cycles with no (fudged) latency increase } + adjust_delta = 0 update_bw() update_bw_min_delta = (0.02 * peer_count) } @@ -93,7 +94,7 @@ function update_bw() { rx_rate=(rx_delta / (ts_delta)) tx_delta=(tx - tx_old) tx_rate=(tx_delta / (ts_delta)) - printf("# (Kbyte/s) rx_rate=%-12.2f tx_rate=%-12.2f ts_delta=%-1.2f\n", (rx_rate / 1024), (tx_rate / 1024), ts_delta) + # printf("# " ts " (Kbyte/s) rx_rate=%-12.2f tx_rate=%-12.2f ts_delta=%-1.2f\n", (rx_rate / 1024), (tx_rate / 1024), ts_delta) } @@ -121,21 +122,33 @@ function process_record(pn, bytes, lat) { function adjust_bw(peername, latency) { + adjust_delta = (ts - adjust_old) + + # do not try to set bw more than once a second + if (adjust_delta < 1.0) { + # print "looping too fast, skipping BW update adjust_delta=" adjust_delta + return + } + last2avg = (((ping_prev[peername] + latency) / 2.0)) thresh_fudged = (FUDGE + (ping_avgs[peername] * THRESHOLD)) 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] + print ts " " adjust_delta " 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) + # print "set adjust_old=" ts + adjust_old = ts } 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] + print ts " " adjust_delta " 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) + # print "set adjust_old=" ts + adjust_old = ts } not_increasing_count[peername]++ } @@ -144,19 +157,19 @@ function adjust_bw(peername, latency) { function update_pingstats(peername, latency) { slotindex[peername]++ - pingslot=peername ":" slotindex[peername] - pingstats[pingslot]=latency + pingslot = peername ":" slotindex[peername] + pingstats[pingslot] = latency if(slotindex[peername] % PINGSLOTS == 0) { if (have_baseline[peername] == 0) { - have_baseline[peername]=1 + have_baseline[peername] = 1 print "# READY PEER: " peername } - slotindex[peername]=0 + slotindex[peername] = 0 update_ping_avgs(peername) # print peername " avg " ping_avgs[peername] " cur " latency } if (latency < ping_min[peername] && latency > FUDGE) { - ping_min[peername]=latency + ping_min[peername] = latency # print peername " lowest " latency } } @@ -164,7 +177,7 @@ function update_pingstats(peername, latency) { function update_ping_avgs(peername) { ping_sum = 0 - for (k = 0; k<=PINGSLOTS; ++k) { + for (k = 0; k <= PINGSLOTS; ++k) { ps = peername ":" k ping_sum += pingstats[ps] } @@ -175,8 +188,8 @@ 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") + #print "# BW CHANGE dev=" dev " kbit=" kbit + system("echo COMMAND " ts " tc qdisc change root dev " dev " cake bandwidth " kbit "Kbit") }