[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r22612: {arm} change: notice level log entry for bandwidth prepopulation s (in arm/trunk: . interface/graphing util)
Author: atagar
Date: 2010-07-07 04:09:30 +0000 (Wed, 07 Jul 2010)
New Revision: 22612
Modified:
arm/trunk/TODO
arm/trunk/armrc.sample
arm/trunk/interface/graphing/bandwidthStats.py
arm/trunk/util/connections.py
Log:
change: notice level log entry for bandwidth prepopulation success
fix: only raising connection resolution rate if deemed necessary by multiple subsiquent entires
Modified: arm/trunk/TODO
===================================================================
--- arm/trunk/TODO 2010-07-07 00:35:46 UTC (rev 22611)
+++ arm/trunk/TODO 2010-07-07 04:09:30 UTC (rev 22612)
@@ -9,12 +9,7 @@
progress - /init and /util are done and /interface is in progress. Known
bugs are being fixed while refactoring.
[X] header panel
- [ ] graph panel
- - prepopulate bandwidth graph with contents of state file
- Open questions:
- - How frequently are the bandwidth values in the state file
- updated?
- - Is it every second, matching the last BW events?
+ [X] graph panel
[ ] log panel
- option to clear log
- allow home/end keys to jump to start/end
@@ -157,12 +152,6 @@
'SETEVENTS')
- 'guard' option that restricts to GETINFO only (start with this)
- issue sighup reset
- * provide observed bandwidth
- Newer relays have a 'w' entry that states the bandwidth and old versions
- have client side measurements (third argument in 'Bandwidth' of
- descriptor, note that it's in KB/s). Label the former (server side) as
- 'Measured' and later (client side) as 'Observed' to differentiate.
- requested by arma
* menu with all torrc options (making them editable/toggleable)
* Setup wizard for new relays
Setting the password and such for torrc generation (idea by ioerror)
Modified: arm/trunk/armrc.sample
===================================================================
--- arm/trunk/armrc.sample 2010-07-07 00:35:46 UTC (rev 22611)
+++ arm/trunk/armrc.sample 2010-07-07 04:09:30 UTC (rev 22612)
@@ -71,6 +71,7 @@
log.panelRecreated DEBUG
log.graph.ps.invalidStat WARN
log.graph.ps.abandon WARN
+log.graph.bw.prepopulateSuccess NOTICE
log.graph.bw.prepopulateFailure NOTICE
log.connLookupFailed INFO
log.connLookupFailover NOTICE
Modified: arm/trunk/interface/graphing/bandwidthStats.py
===================================================================
--- arm/trunk/interface/graphing/bandwidthStats.py 2010-07-07 00:35:46 UTC (rev 22611)
+++ arm/trunk/interface/graphing/bandwidthStats.py 2010-07-07 04:09:30 UTC (rev 22612)
@@ -18,9 +18,10 @@
# valid keys for the accountingInfo mapping
ACCOUNTING_ARGS = ("status", "resetTime", "read", "written", "readLimit", "writtenLimit")
+PREPOPULATE_SUCCESS_MSG = "Read a day of bandwidth history from the state file"
PREPOPULATE_FAILURE_MSG = "Unable to prepopulate bandwidth information (%s)"
-DEFAULT_CONFIG = {"features.graph.bw.accounting.show": True, "features.graph.bw.accounting.rate": 10, "features.graph.bw.accounting.isTimeLong": False, "log.graph.bw.prepopulateFailure": log.NOTICE}
+DEFAULT_CONFIG = {"features.graph.bw.accounting.show": True, "features.graph.bw.accounting.rate": 10, "features.graph.bw.accounting.isTimeLong": False, "log.graph.bw.prepopulateSuccess": log.NOTICE, "log.graph.bw.prepopulateFailure": log.NOTICE}
class BandwidthStats(graphPanel.GraphStats, TorCtl.PostEventListener):
"""
@@ -158,6 +159,11 @@
del self.primaryCounts[intervalIndex][self.maxCol + 1:]
del self.secondaryCounts[intervalIndex][self.maxCol + 1:]
+ msg = PREPOPULATE_SUCCESS_MSG
+ missingSec = 900 * max(missingReadEntries, missingWriteEntries)
+ if missingSec: msg += "(last %s is missing)" % uiTools.getTimeLabel(missingSec)
+ log.log(self._config["log.graph.bw.prepopulateSuccess"], msg)
+
return True
def bandwidth_event(self, event):
Modified: arm/trunk/util/connections.py
===================================================================
--- arm/trunk/util/connections.py 2010-07-07 00:35:46 UTC (rev 22611)
+++ arm/trunk/util/connections.py 2010-07-07 04:09:30 UTC (rev 22612)
@@ -253,6 +253,10 @@
self._cond = threading.Condition() # used for pausing the thread
self._subsiquentFailures = 0 # number of failed resolutions with the default in a row
self._resolverBlacklist = [] # resolvers that have failed to resolve
+
+ # Number of sequential times the threshold rate's been too low. This is to
+ # avoid having stray spikes up the rate.
+ self._rateThresholdBroken = 0
def run(self):
while not self._halt:
@@ -285,11 +289,14 @@
newMinDefaultRate = 100 * lookupTime
if self.defaultRate < newMinDefaultRate:
- # adding extra to keep the rate from frequently changing
- self.defaultRate = newMinDefaultRate + 0.5
-
- msg = "connection lookup time increasing to %0.1f seconds per call" % self.defaultRate
- log.log(CONFIG["log.connLookupRateGrowing"], msg)
+ if self._rateThresholdBroken >= 3:
+ # adding extra to keep the rate from frequently changing
+ self.defaultRate = newMinDefaultRate + 0.5
+
+ msg = "connection lookup time increasing to %0.1f seconds per call" % self.defaultRate
+ log.log(CONFIG["log.connLookupRateGrowing"], msg)
+ else: self._rateThresholdBroken += 1
+ else: self._rateThresholdBroken = 0
if isDefault: self._subsiquentFailures = 0
except IOError, exc: