[LNT] r238968 - Update the daily report to use more previous data
Chris Matthews
chris.matthews at apple.com
Wed Jun 3 16:05:11 PDT 2015
Thanks. Fixed in r238989 and r238987.
> On Jun 3, 2015, at 3:24 PM, Justin Bogner <mail at justinbogner.com> wrote:
>
> 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