[tor-commits] [sbws/master] Cap bw in torflow scaling
juga at torproject.org
juga at torproject.org
Tue Sep 18 09:26:11 UTC 2018
commit 678b1bc6d9ed1740dbf8443f438596f4c6496e79
Author: juga0 <juga at riseup.net>
Date: Fri Aug 31 14:27:21 2018 +0000
Cap bw in torflow scaling
---
sbws/lib/v3bwfile.py | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/sbws/lib/v3bwfile.py b/sbws/lib/v3bwfile.py
index 844efb3..a94ee73 100644
--- a/sbws/lib/v3bwfile.py
+++ b/sbws/lib/v3bwfile.py
@@ -398,6 +398,7 @@ class V3BWFile(object):
def from_results(cls, results, state_fpath='',
scale_constant=SBWS_SCALE_CONSTANT,
scaling_method=None, torflow_obs=TORFLOW_OBS_LAST,
+ torflow_cap=TORFLOW_BW_MARGIN,
reverse=False):
"""Create V3BWFile class from sbws Results.
@@ -432,7 +433,8 @@ class V3BWFile(object):
cls.warn_if_not_accurate_enough(bw_lines, scale_constant)
# log.debug(bw_lines[-1])
elif scaling_method == TORFLOW_SCALING:
- bw_lines = cls.bw_torflow_scale(bw_lines_raw, torflow_obs)
+ bw_lines = cls.bw_torflow_scale(bw_lines_raw, torflow_obs,
+ torflow_cap)
# log.debug(bw_lines[-1])
else:
bw_lines = cls.bw_kb(bw_lines_raw)
@@ -685,26 +687,28 @@ class V3BWFile(object):
muf = mean([min(l.bw_bs_mean, mu) for l in bw_lines])
# bw sum (Torflow's tot_net_bw or tot_sbw)
sum_bw = sum([l.bw_bs_mean for l in bw_lines])
- # Torflow's clipping, not being applied
- # hlimit = sum_bw * TORFLOW_BW_MARGIN
+ # Torflow's clipping
+ hlimit = sum_bw * TORFLOW_BW_MARGIN
log.debug('sum %s', sum_bw)
log.debug('mu %s', mu)
log.debug('muf %s', muf)
- # log.debug('hlimit %s', hlimit)
+ log.debug('hlimit %s', hlimit)
for l in bw_lines_tf:
if desc_obs_bws == TORFLOW_OBS_LAST:
desc_obs_bw = l.desc_obs_bw_bs_last
elif desc_obs_bws == TORFLOW_OBS_MEAN:
desc_obs_bw = l.desc_obs_bw_bs_mean
# just applying the formula above:
- l.bw = max(round(
- max(
- # ratio
- l.bw_bs_mean / mu,
- # ratio filtered
- min(l.bw_bs_mean, mu) / muf
- ) * desc_obs_bw
- / 1000), 1)
+ bw_new = max(
+ l.bw_bs_mean / mu, # ratio
+ min(l.bw_bs_mean, mu) / muf # ratio filtered
+ ) * desc_obs_bw \
+ / 1000 # convert to KB
+ # Cap maximum bw
+ if cap is not None:
+ bw_new = min(hlimit, bw_new)
+ # remove decimals and avoid 0
+ l.bw = max(round(bw_new), 1)
return sorted(bw_lines_tf, key=lambda x: x.bw, reverse=reverse)
@property
More information about the tor-commits
mailing list