if (consec_timeouts > ((1.5 * peer_count) + 2)) {
# print "# " ts " too many TIMEOUTS in a row, decreasing SQM bw"
bw_cur_step_rx = 0
- set_bw(IFACE_RX, STEPS_RX[bw_cur_step_rx]) # XXX TODO
+ set_bw(IFACE_RX, STEPS_RX[bw_cur_step_rx])
return
}
return
}
- # XXX this logic needs fixing
- # if ( rx_rate < (rx_rate_max * 0.1) || tx_rate < (tx_rate_max * 0.1) ) {
-
+ # XXX TODO - this needs to get MUCH better!
+ # 1.) FUDGE needs to be properly accounted in BW increase path
+ # 2.) Try to dynamically compute/adapt FUDGE in no-load condition?
# Try to determine the latency trend over the last few samples
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]) {
- if ( rx_rate < (rx_rate_max * 0.1)) {
+ if ( rx_rate < (rx_rate_max * 0.1)) { # XXX TODO is this correct?
print "# " ts " line does not appear to be loaded, skipping SQM bw downgrade"
} else {
# print ts " " adjust_ts_delta " CONSIDER BW DECREASE # " peername " lat=" latency " prev=" ping_prev[peername] " pprev=" ping_pprev[peername] " avg=" ping_avgs[peername] " min=" ping_min[peername]
adjust_old = ts
}
not_increasing_count[peername]=0
- } else if (latency < ping_prev[peername] && latency < ping_pprev[peername] && ping_prev[peername] < ping_pprev[peername]) {
+ } else if (latency < (ping_prev[peername] + FUDGE/2) && latency < (ping_pprev[peername] + FUDGE / 2) && ping_prev[peername] < (ping_pprev[peername] + FUDGE/2)) {
if (not_increasing_count[peername] > (5 * PINGSLOTS)) {
# print ts " " adjust_ts_delta " CONSIDER BW INCREASE # " peername " lat=" latency " prev=" ping_prev[peername] " pprev=" ping_pprev[peername] " avg=" ping_avgs[peername] " min=" ping_min[peername]
if (bw_cur_step_rx < bw_maxindex_rx) {
}
not_increasing_count[peername]++
} else {
- peer_stats_print(peername)
+ peer_stats_print(peername, "# adjst_sqm noop")
}
}
-function peer_stats_print(pn) {
- printf("%-12.1f %12s lat=%04.1f plat=%04.1f pplat=%04.1f avg=%04.1f\n", ts, pn, lat, ping_prev[pn], ping_pprev[pn], ping_avgs[pn])
- #print ts " " adjust_ts_delta " BW NOOP # " peername " lat=" latency " prev=" ping_prev[peername] " pprev=" ping_pprev[peername] " avg=" ping_avgs[peername] " min=" ping_min[peername]
+function peer_stats_print(pn, affix) {
+ printf("%-12.1f %12s lat=%04.1f plat=%04.1f pplat=%04.1f avg=%04.1f %s\n", ts, pn, lat, ping_prev[pn], ping_pprev[pn], ping_avgs[pn], affix)
}