]> johannes.truschnigg.info Git - sqm_lagthrottle/commitdiff
Update formatting, reduce debug output
authorJohannes Truschnigg <johannes@truschnigg.info>
Tue, 15 Mar 2022 21:16:22 +0000 (22:16 +0100)
committerJohannes Truschnigg <johannes@truschnigg.info>
Tue, 15 Mar 2022 21:16:22 +0000 (22:16 +0100)
__lagdetect.awk

index 38a090d53c76a481cc85d65763f42f86960cae1f..9c0f1b23484183595233c943be529289595a86cb 100644 (file)
@@ -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")
 }