[LNT] r238968 - Update the daily report to use more previous data
Justin Bogner
mail at justinbogner.com
Wed Jun 3 15:24:10 PDT 2015
Chris Matthews <cmatthews5 at apple.com> writes:
> Author: cmatthews
> Date: Wed Jun 3 16:01:32 2015
> New Revision: 238968
>
> URL: http://llvm.org/viewvc/llvm-project?rev=238968&view=rev
> Log:
> Update the daily report to use more previous data
>
> Now the analysis can use past data better, pass in more old data. Daily
> report used to compare the last rev on each day, now it compares last
> rev on current day to all revs on previous day.
>
> Modified:
> lnt/trunk/lnt/server/reporting/dailyreport.py
>
> Modified: lnt/trunk/lnt/server/reporting/dailyreport.py
> URL:
> http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/reporting/dailyreport.py?rev=238968&r1=238967&r2=238968&view=diff
> ==============================================================================
> --- lnt/trunk/lnt/server/reporting/dailyreport.py (original)
> +++ lnt/trunk/lnt/server/reporting/dailyreport.py Wed Jun 3 16:01:32 2015
> @@ -9,6 +9,10 @@ from lnt.server.reporting.analysis impor
>
> from lnt.server.ui import util
>
> +from collections import namedtuple
> +
> +OrderAndHistory = namedtuple('OrderAndHistory', ['max_order', 'recent_orders'])
> +
> class DailyReport(object):
> def __init__(self, ts, year, month, day, num_prior_days_to_include = 3,
> day_start_offset_hours=16, for_mail=False):
> @@ -72,7 +76,7 @@ class DailyReport(object):
> for i in range(self.num_prior_days_to_include + 1)]
>
> # Find all the runs that occurred for each day slice.
> - prior_runs = [ts.query(ts.Run).\
> + prior_runs = [ts.query(ts.Run).
> filter(ts.Run.start_time > prior_day).\
> filter(ts.Run.start_time <= day).all()
> for day,prior_day in util.pairs(self.prior_days)]
> @@ -89,23 +93,29 @@ class DailyReport(object):
> # aggregation.
> self.prior_days_machine_order_map = \
> [None] * self.num_prior_days_to_include
> - for i,runs in enumerate(prior_runs):
> + historic_runs = [None] * len(prior_runs)
> + for i, runs in enumerate(prior_runs):
> # Aggregate the runs by machine.
> machine_to_all_orders = util.multidict()
> for r in runs:
> machine_to_all_orders[r.machine] = r.order
>
> - # Create a map from machine to max order.
> + # Create a map from machine to max order and some history.
> self.prior_days_machine_order_map[i] = machine_order_map = dict(
> - (machine, max(orders))
> - for machine,orders in machine_to_all_orders.items())
> + (machine, OrderAndHistory(max(orders), sorted(orders)))
> + for machine, orders in machine_to_all_orders.items())
>
> # Update the run list to only include the runs with that order.
> prior_runs[i] = [r for r in runs
> - if r.order is machine_order_map[r.machine]]
> + if r.order is machine_order_map[r.machine].max_order]
> +
> + # Also keep some recent runs, so we have some extra samples.
> + historic_runs[i] = [r for r in runs
> + if r.order in machine_order_map[r.machine].recent_orders]
80-col?
>
> # Form a list of all relevant runs.
> relevant_runs = sum(prior_runs, [])
> + less_relevant_runs = sum(historic_runs, relevant_runs)
>
> # Find the union of all machines reporting in the relevant runs.
> self.reporting_machines = list(set(r.machine for r in relevant_runs))
> @@ -143,6 +153,12 @@ class DailyReport(object):
> for run in day_runs:
> machine_runs[(run.machine_id, day_index)] = run
>
> + # Also aggregate past runs by day.
> + self.machine_past_runs = util.multidict()
> + for day_index, day_runs in enumerate(historic_runs):
> + for run in day_runs:
> + self.machine_past_runs[(run.machine_id, day_index)] = run
> +
> relevant_run_ids = [r.id for r in relevant_runs]
>
> # If there are no relevant runs, just stop processing (the report will
> @@ -158,7 +174,7 @@ class DailyReport(object):
> ts.Sample.test_id == ts.Test.id))).all()
> self.reporting_tests.sort(key=lambda t: t.name)
>
> - run_ids_to_load = list(relevant_run_ids)
> + run_ids_to_load = list(relevant_run_ids) + [r.id for r in less_relevant_runs]
Here too.
>
> # Create a run info object.
> sri = lnt.server.reporting.analysis.RunInfo(ts, run_ids_to_load)
> @@ -193,19 +209,25 @@ class DailyReport(object):
> for machine in self.reporting_machines:
> # Get the most recent comparison result.
> day_runs = machine_runs.get((machine.id, 0), ())
> - prev_runs = machine_runs.get((machine.id, 1), ())
> + prev_runs = self.machine_past_runs.get((machine.id, 1), ())
> +
> + prev_day_run = machine_runs.get((machine.id, 1), ())
> +
> cr = sri.get_comparison_result(
> day_runs, prev_runs, test.id, field)
>
> # If the result is not "interesting", ignore this machine.
> if not cr.is_result_interesting():
> continue
> -
> + else:
> + print test.name.split("/")[-1], repr(cr), cr.pct_delta
"else" after continue is a bit strange here.
> # Otherwise, compute the results for all the days.
> day_results = [cr]
> for i in range(1, self.num_prior_days_to_include):
> - day_runs = prev_runs
> - prev_runs = machine_runs.get((machine.id, i+1), ())
> + day_runs = prev_day_run
> + prev_day_run = machine_runs.get((machine.id, i+1), ())
> + prev_runs = self.machine_past_runs.get(
> + (machine.id, i+1), ())
> cr = sri.get_comparison_result(day_runs, prev_runs,
> test.id, field)
> day_results.append(cr)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list