[CalendarServer-changes] [7421] CalendarServer/trunk/contrib/performance/loadtest/profiles.py

source_changes at macosforge.org source_changes at macosforge.org
Fri May 6 14:44:59 PDT 2011


Revision: 7421
          http://trac.macosforge.org/projects/calendarserver/changeset/7421
Author:   exarkun at twistedmatrix.com
Date:     2011-05-06 14:44:57 -0700 (Fri, 06 May 2011)
Log Message:
-----------
Report average scheduling latency in aggregate summary area

Modified Paths:
--------------
    CalendarServer/trunk/contrib/performance/loadtest/profiles.py

Modified: CalendarServer/trunk/contrib/performance/loadtest/profiles.py
===================================================================
--- CalendarServer/trunk/contrib/performance/loadtest/profiles.py	2011-05-06 20:30:25 UTC (rev 7420)
+++ CalendarServer/trunk/contrib/performance/loadtest/profiles.py	2011-05-06 21:44:57 UTC (rev 7421)
@@ -37,6 +37,7 @@
 from twisted.internet.task import LoopingCall
 from twisted.web.http import PRECONDITION_FAILED
 
+from stats import mean, median
 from loadtest.logger import SummarizingMixin
 from loadtest.ical import IncorrectResponseCode
 
@@ -382,24 +383,34 @@
         ('>3sec', 8, '%8s'),
         ('mean', 8, '%8.4f'),
         ('median', 8, '%8.4f'),
+        ('avglag (ms)', 8, '%8.4f'),
         ]
 
     def __init__(self):
         self._perOperationTimes = {}
+        self._perOperationLags = {}
 
 
     def observe(self, event):
         if event.get("type") == "operation":
-            if event.get('lag') is None:
+            lag = event.get('lag')
+            if lag is None:
                 event['lag'] = ''
             else:
-                event['lag'] = self.lagFormat % (event['lag'] * 1000.0,)
+                event['lag'] = self.lagFormat % (lag * 1000.0,)
             print (self.formats[event[u'phase']] % event).encode('utf-8')
             if event[u'phase'] == u'end':
                 dataset = self._perOperationTimes.setdefault(event[u'label'], [])
                 dataset.append((event[u'success'], event[u'duration']))
+            elif lag is not None:
+                dataset = self._perOperationLags.setdefault(event[u'label'], [])
+                dataset.append(lag)
 
+    def _summarizeData(self, operation, data):
+        avglag = mean(self._perOperationLags.get(operation, [0.0])) * 1000.0
+        return SummarizingMixin._summarizeData(self, operation, data) + (avglag,)
 
+
     def report(self):
         print
         self.printHeader([
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110506/6e8d91a4/attachment.html>


More information about the calendarserver-changes mailing list