]> johannes.truschnigg.info Git - sqm_lagthrottle/commitdiff
Record minimum latency, improve recommendation message
authorJohannes Truschnigg <johannes@truschnigg.info>
Sat, 12 Mar 2022 14:46:25 +0000 (15:46 +0100)
committerJohannes Truschnigg <johannes@truschnigg.info>
Sat, 12 Mar 2022 14:46:25 +0000 (15:46 +0100)
__lagdetect.awk

index a884cfab48765e1569544b0bba4e1bf32b44769d..036650c27f475c82750a3d915d3013420ba34171 100644 (file)
@@ -9,6 +9,7 @@ BEGIN {
     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
@@ -43,13 +44,13 @@ BEGIN {
     last2avg = (((ping_prev[pn] + lat) / 2.0))
     thresh_fudged = (FUDGE + (ping_avgs[pn] * THRESHOLD))
     if (last2avg > thresh_fudged ) {
-      print "LATENCY ++ " last2avg " " thresh_fudged " prev=" ping_prev[pn] " lat=" lat " host=" pn
-      # print "CONSIDER BW DECREASE" # need better way to make this call
+      if (lat > ping_prev[pn] && lat > ping_pprev[pn]) {
+        print "CONSIDER BW DECREASE # " pn " lat=" lat " prev=" ping_prev[pn] " pprev=" ping_pprev[pn] " avg=" ping_avgs[pn] " min=" ping_min[pn]
+      }
       not_increasing_count[pn]=0
     } else {
-      print "LATENCY == " last2avg " " thresh_fudged " prev=" ping_prev[pn] " lat=" lat " host=" pn
       if (not_increasing_count[pn] > (5 * PINGSLOTS)) {
-        print "CONSIDER BW INCREASE"
+        print "CONSIDER BW INCREASE # " pn " lat=" lat " prev=" ping_prev[pn] " pprev=" ping_pprev[pn] " avg=" ping_avgs[pn] " min=" ping_min[pn]
         not_increasing_count[pn]=0
       }
       not_increasing_count[pn]++
@@ -67,11 +68,18 @@ function update_pingstats(peername, latency) {
   pingslot=peername ":" slotindex[peername]
   pingstats[pingslot]=latency
   if(slotindex[peername] % PINGSLOTS == 0) {
-    have_baseline[peername]=1
+    if (have_baseline[peername] == 0) {
+      have_baseline[peername]=1
+      print "# STARTING RECOMMENDER FOR " peername
+    }
     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
+    # print peername " lowest " latency
+  }
 }