From: Johannes Truschnigg Date: Sat, 12 Mar 2022 14:46:25 +0000 (+0100) Subject: Record minimum latency, improve recommendation message X-Git-Url: https://johannes.truschnigg.info/gitweb/?a=commitdiff_plain;h=c2fc9ae5262dc9dea4dc435ec710bb635e0a6e6c;p=sqm_lagthrottle Record minimum latency, improve recommendation message --- 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 + } }