]> johannes.truschnigg.info Git - sqm_lagthrottle/commitdiff
Import first draft of configuration suggestion script
authorJohannes Truschnigg <johannes@truschnigg.info>
Fri, 18 Mar 2022 14:17:42 +0000 (15:17 +0100)
committerJohannes Truschnigg <johannes@truschnigg.info>
Fri, 18 Mar 2022 14:17:42 +0000 (15:17 +0100)
config_suggest [new file with mode: 0755]

diff --git a/config_suggest b/config_suggest
new file mode 100755 (executable)
index 0000000..25b019f
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+fpo="/tmp/fping_${$}.out"
+POTENTIAL_PING_PEERS='1.1.1.1 8.8.8.8 9.9.9.9 a.root-servers.net b.root-servers.net c.root-servers.net d.root-servers.net e.root-servers.net f.root-servers.net g.root-servers.net h.root-servers.net i.root-servers.net j.root-servers.net k.root-servers.net l.root-servers.net m.root-servers.net'
+
+set -u
+
+echo "Pinging potential peers... please stand by and keep your Internet-directed traffic at a minimum."
+
+fping --addr --count=48 --period=250 --retry=0 --size=1280 ${POTENTIAL_PING_PEERS} >"${fpo}" 2>&1
+
+awk -v "outfile=${fpo}" '
+/^[^ ].* 0% loss/ {
+  peers_records[$1]++
+  peers_totalms[$1] += $6
+  peers_squarems[$1] += ($6 ^ 2)
+  peers_pinglist[$1]=peers_pinglist[$1] " " $6
+  if($6 > peers_max[$1]) { peers_max[$1]=$6 }
+  if($6 < peers_min[$1] || peers_min[$1] == 0) { peers_min[$1]=$6 }
+}
+/^[^ ].*100% loss/ {
+  peers_loss[$1]++
+}
+
+END {
+  cmd_stats = "sort -nr > " outfile ".stats"
+  for (p in peers_loss)
+  {
+    print "TIMEOUT " p " miss=" peers_loss[p]
+  }
+  for (p in peers_totalms)
+  {
+    alat = peers_totalms[p] / peers_records[p]
+    stdev = sqrt((peers_squarems[p] - peers_totalms[p] ^ 2 / peers_records[p])/peers_records[p])
+    if (peers_loss[$1] < 2) {
+      printf("%5.2f stdev avg %-5.1f min %-5.1f max %-5.1f %s\n", stdev, alat, peers_min[p], peers_max[p], p) | cmd_stats
+    }
+  }
+  for (p in peers_pinglist)
+  {
+    #print p " " peers_pinglist[p]
+  }
+}' "${fpo}"
+
+cat "${fpo}".stats