]> johannes.truschnigg.info Git - sqm_lagthrottle/commitdiff
Split out adjust_bw()
authorJohannes Truschnigg <johannes@truschnigg.info>
Sat, 12 Mar 2022 17:35:53 +0000 (18:35 +0100)
committerJohannes Truschnigg <johannes@truschnigg.info>
Sat, 12 Mar 2022 17:35:53 +0000 (18:35 +0100)
__lagdetect.awk

index 9479e74a82f3e216ffedb09ac9b29897fffdeaef..d7e33daa3427617cc8ec36b1032f3d894de1853c 100644 (file)
@@ -1,8 +1,11 @@
 #!/usr/bin/awk -f
 BEGIN {
+  print "# INIT=" systime()
   print "# THRESHOLD=" THRESHOLD
   print "# FUDGE=" FUDGE
   print "# PINGSLOTS=" PINGSLOTS
+  print "# BW_MAX=" BW_MAX
+  print "# BW_MIN=" BW_MIN
   split(PING_PEERS, pps, " ")
   for (pp in pps) {
     pn = pps[pp]
@@ -24,7 +27,9 @@ BEGIN {
   seq=$3
   bytes=0
   lat=9999
-  print "TIMEOUT for " pn
+  # XXX TODO what now?
+  process_record(pn, bytes, lat)
+  #print "TIMEOUT for " pn
 }
 
 
@@ -34,35 +39,51 @@ BEGIN {
   seq=$3
   bytes=$4
   lat=$6
+  process_record(pn, bytes, lat)
+}
+
+
+function process_record(pn, bytes, lat) {
   if (! (pn in slotindex)) {
-    print "FATAL: BOGUS PEER: " pn
+    print "FATAL: BOGUS PEER: " pn # XXX really?
     exit 1
   }
+
+  if (bytes == 0 && lat = 9999) {
+    print "# WARN: TIMEOUT: " pn
+    return 1
+  }
+
   #printf("%s %db in %.2fms\n", pn, bytes, lat)
   update_pingstats(pn, lat)
-  if(have_baseline[pn]) {
-    last2avg = (((ping_prev[pn] + lat) / 2.0))
-    thresh_fudged = (FUDGE + (ping_avgs[pn] * THRESHOLD))
-    if (last2avg > thresh_fudged ) {
-      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 {
-      if (not_increasing_count[pn] > (5 * PINGSLOTS)) {
-        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]++
-    }
-  } else {
-    # print "NODATA"
+
+  if (have_baseline[pn]) {
+    adjust_bw(pn, lat)
   }
+
   ping_pprev[pn]=ping_prev[pn]
   ping_prev[pn]=lat
 }
 
 
+function adjust_bw(peername, latency) {
+  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 systime() " CONSIDER BW DECREASE # " peername " lat=" latency " prev=" ping_prev[peername] " pprev=" ping_pprev[peername] " avg=" ping_avgs[peername] " min=" ping_min[peername]
+    }
+    not_increasing_count[peername]=0
+  } else {
+    if (not_increasing_count[peername] > (5 * PINGSLOTS)) {
+      print systime() " 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
+    }
+    not_increasing_count[peername]++
+  }
+}
+
+
 function update_pingstats(peername, latency) {
   slotindex[peername]++
   pingslot=peername ":" slotindex[peername]