For all aggregate timing events, record an upper and lower bound, and a count

This commit is contained in:
R. Tyler Croy 2011-03-25 16:48:40 -07:00
parent 44c9cf3d8b
commit 2d92d1bca3
1 changed files with 11 additions and 1 deletions

View File

@ -55,14 +55,24 @@ class StatsServer(SocketServer.UDPServer):
def _generate_timings(self):
for label, points in self._timing_data.iteritems():
lower = sys.maxint
upper = 0.0
total = 0.0
count = 0.0
for delta, tstamp in points:
if delta < lower:
lower = delta
if delta > upper:
upper = delta
count += 1.0
total += delta
now = int(time.time())
average = (total / count)
yield '%(label)s %(average)s %(now)s' % locals()
yield '%(label)s.avg %(average)s %(now)s' % locals()
yield '%(label)s.lower %(lower)s %(now)s' % locals()
yield '%(label)s.upper %(upper)s %(now)s' % locals()
yield '%(label)s.count %(count)s %(now)s' % locals()
def _clear_data(self):
for d in (self._count_data, self._timing_data):