From c2fc9ae5262dc9dea4dc435ec710bb635e0a6e6c Mon Sep 17 00:00:00 2001 From: Johannes Truschnigg Date: Sat, 12 Mar 2022 15:46:25 +0100 Subject: [PATCH] Record minimum latency, improve recommendation message --- __lagdetect.awk | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/__lagdetect.awk b/__lagdetect.awk index a884cfa..036650c 100644 --- a/__lagdetect.awk +++ b/__lagdetect.awk @@ -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 + } } -- 2.39.5