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
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]++
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
+ }
}