#27135: Write descriptor bandwidths average in raw results ---------------------------+------------------------------------- Reporter: juga | Owner: juga Type: defect | Status: assigned Priority: Medium | Milestone: sbws 1.0 (MVP must) Component: Core Tor/sbws | Version: Severity: Normal | Resolution: Keywords: | Actual Points: Parent ID: #27108 | Points: Reviewer: | Sponsor: ---------------------------+-------------------------------------
Comment (by teor): Replying to [comment:12 juga]: > > > 1. Set the decay constant (R) to a number in (0, 1). > > > > We get a descriptor every 12-18 hours, and there is a daily cycle in Tor bandwidths. > > If i just get the descriptor every 12h, after 5 days will have 10 values for it, and if it changes, then i think would be enough to get the mean of them. Descriptors can change every hour, and bandwidths can change for new relays every 3 hours. So it would be better to get the descriptor every hour. I don't think you should use the mean, because old values are much less relevant than newer values. (But if you want to write code that takes 10 values and calculates the mean, I can rewrite it to calculate a decaying weighted average.) > > So we want to average over a few days, to smooth out spikes. A good value for R is 0.98 every hour, because the decaying average for 15 hour bandwidths is 26% B1 + 19% B2 + 14% B3 + 11% B4 + 30% B5-10. (B11 is less than 1%.) > > Where these numbers (0.98, 26, 19,...) are coming from?. Mathematics might help 0.98 is an arbitrarily chosen constant K that seems to produce a reasonable decay over a few days. The percentages are a geometric progression based on K, over a week of 15-hour average descriptor times. In python, they are: {{{ >>> K = 0.98 >>> K15 = 0.98**15 >>> for i in xrange(0,(7*24)/15): ... print "(1 - K15)*(K15**{}) =".format(i), (1 - K15)*(K15**i) ... (1 - K15)*(K15**0) = 0.261430897355 (1 - K15)*(K15**1) = 0.193084783263 (1 - K15)*(K15**2) = 0.142606455109 (1 - K15)*(K15**3) = 0.105324721581 (1 - K15)*(K15**4) = 0.0777895851047 (1 - K15)*(K15**5) = 0.0574529840659 (1 - K15)*(K15**6) = 0.0424329988859 (1 - K15)*(K15**7) = 0.0313397019097 (1 - K15)*(K15**8) = 0.0231465355166 (1 - K15)*(K15**9) = 0.0170953159659 (1 - K15)*(K15**10) = 0.0126260721723 }}} > > 4. When voting: > > By when voting you mean when we generate the bandwidth list file? Yes. > > > btw, it seems that the answer to my question in [1] is that 1/45 ~= 1/e > > > > Can you explain what you mean by `e`? > > > > The base of the natural logarithm is `e ~= 2.72`, so `1/e ~= 0.37`. > > i meant the natural logarithm, exactly that ^ I still don't understand. But I don't think it's important. -- Ticket URL: <https://trac.torproject.org/projects/tor/ticket/27135#comment:13> Tor Bug Tracker & Wiki <https://trac.torproject.org/> The Tor Project: anonymity online
_______________________________________________ tor-bugs mailing list tor-bugs@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs