[autotest] Collect time stats in suite_scheduler

The stats should be useful to indicating the bottleneck and when suite_scheduler
hangs.

BUG=chromium:527259
TEST=local run suite_scheduler

Change-Id: I004188baabb38374fdedd22257b191b7cdf16e23
Reviewed-on: https://chromium-review.googlesource.com/296821
Commit-Ready: Dan Shi <dshi@chromium.org>
Tested-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Mungyung Ryu <mkryu@google.com>
diff --git a/site_utils/suite_scheduler/driver.py b/site_utils/suite_scheduler/driver.py
index d72204a..e6bf552 100644
--- a/site_utils/suite_scheduler/driver.py
+++ b/site_utils/suite_scheduler/driver.py
@@ -8,8 +8,12 @@
 import task, timed_event
 
 import common
+from autotest_lib.client.common_lib.cros.graphite import autotest_stats
 from autotest_lib.server import utils
 
+
+_timer = autotest_stats.Timer('suite_scheduler')
+
 class Driver(object):
     """Implements the main loop of the suite_scheduler.
 
@@ -120,12 +124,15 @@
                 self.HandleEventsOnce(mv)
             except board_enumerator.EnumeratorException as e:
                 logging.warning('Failed to enumerate boards: %r', e)
-            mv.Update()
-            task.TotMilestoneManager().refresh()
+            with _timer.get_client('manifest_versions_update'):
+                mv.Update()
+            with _timer.get_client('tot_milestone_manager_refresh'):
+                task.TotMilestoneManager().refresh()
             time.sleep(self._LOOP_INTERVAL_SECONDS)
             self.RereadAndReprocessConfig(config, mv)
 
 
+    @_timer.decorate
     def HandleEventsOnce(self, mv):
         """One turn through the loop.  Separated out for unit testing.