[autotest] Better tick stats
This cl generate each metric that is relative to the start of
the tick. We will be able to render a new graph on grafana
which shows clearly how tick time total is composed of
individual steps.
TEST=run scheduler
BUG=chromium:464938
Change-Id: Id882c1af75ebb6324b1be9ac341781550d7b344b
Reviewed-on: https://chromium-review.googlesource.com/257810
Reviewed-by: Fang Deng <fdeng@chromium.org>
Tested-by: Fang Deng <fdeng@chromium.org>
Reviewed-by: Richard Barnette <jrbarnette@chromium.org>
Commit-Queue: Fang Deng <fdeng@chromium.org>
diff --git a/scheduler/site_monitor_db.py b/scheduler/site_monitor_db.py
index 322bb01..9ba0309 100644
--- a/scheduler/site_monitor_db.py
+++ b/scheduler/site_monitor_db.py
@@ -6,6 +6,7 @@
import os
import logging
+import time
from autotest_lib.client.common_lib import global_config
from autotest_lib.client.common_lib.cros.graphite import autotest_stats
@@ -95,47 +96,77 @@
_timer = autotest_stats.Timer('scheduler')
+ _gauge = autotest_stats.Gauge('scheduler_rel')
+ _tick_start = None
@_timer.decorate
def tick(self):
+ self._tick_start = time.time()
super(SiteDispatcher, self).tick()
+ self._gauge.send('tick', time.time() - self._tick_start)
@_timer.decorate
def _garbage_collection(self):
super(SiteDispatcher, self)._garbage_collection()
+ if self._tick_start:
+ self._gauge.send('_garbage_collection',
+ time.time() - self._tick_start)
@_timer.decorate
def _run_cleanup(self):
super(SiteDispatcher, self)._run_cleanup()
+ if self._tick_start:
+ self._gauge.send('_run_cleanup', time.time() - self._tick_start)
@_timer.decorate
def _find_aborting(self):
super(SiteDispatcher, self)._find_aborting()
+ if self._tick_start:
+ self._gauge.send('_find_aborting', time.time() - self._tick_start)
@_timer.decorate
def _process_recurring_runs(self):
super(SiteDispatcher, self)._process_recurring_runs()
+ if self._tick_start:
+ self._gauge.send('_process_recurring_runs',
+ time.time() - self._tick_start)
@_timer.decorate
def _schedule_delay_tasks(self):
super(SiteDispatcher, self)._schedule_delay_tasks()
+ if self._tick_start:
+ self._gauge.send('_schedule_delay_tasks',
+ time.time() - self._tick_start)
@_timer.decorate
def _schedule_running_host_queue_entries(self):
super(SiteDispatcher, self)._schedule_running_host_queue_entries()
+ if self._tick_start:
+ self._gauge.send('_schedule_running_host_queue_entries',
+ time.time() - self._tick_start)
@_timer.decorate
def _schedule_special_tasks(self):
super(SiteDispatcher, self)._schedule_special_tasks()
+ if self._tick_start:
+ self._gauge.send('_schedule_special_tasks',
+ time.time() - self._tick_start)
@_timer.decorate
def _schedule_new_jobs(self):
super(SiteDispatcher, self)._schedule_new_jobs()
+ if self._tick_start:
+ self._gauge.send('_schedule_new_jobs',
+ time.time() - self._tick_start)
+
@_timer.decorate
def _handle_agents(self):
super(SiteDispatcher, self)._handle_agents()
+ if self._tick_start:
+ self._gauge.send('_handle_agents', time.time() - self._tick_start)
+
def _reverify_hosts_where(self, where,
print_message='Reverifying host %s'):