Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(483)

Side by Side Diff: tracing/tracing/metrics/system_health/rail_power_metric.html

Issue 2293533002: Refactor NumericBuilder to HistogramBinBoundaries. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <!-- 2 <!--
3 Copyright 2016 The Chromium Authors. All rights reserved. 3 Copyright 2016 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be 4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file. 5 found in the LICENSE file.
6 --> 6 -->
7 7
8 <link rel="import" href="/tracing/base/statistics.html"> 8 <link rel="import" href="/tracing/base/statistics.html">
9 <link rel="import" href="/tracing/metrics/metric_registry.html"> 9 <link rel="import" href="/tracing/metrics/metric_registry.html">
10 <link rel="import" href="/tracing/metrics/system_health/clock_sync_latency_metri c.html"> 10 <link rel="import" href="/tracing/metrics/system_health/clock_sync_latency_metri c.html">
11 <link rel="import" href="/tracing/value/histogram.html"> 11 <link rel="import" href="/tracing/value/histogram.html">
12 <link rel="import" href="/tracing/value/unit_scale.html"> 12 <link rel="import" href="/tracing/value/unit_scale.html">
13 <link rel="import" href="/tracing/value/value.html"> 13 <link rel="import" href="/tracing/value/value.html">
14 14
15 <script> 15 <script>
16 'use strict'; 16 'use strict';
17 17
18 tr.exportTo('tr.metrics.sh', function() { 18 tr.exportTo('tr.metrics.sh', function() {
19 var TIME_NUMERIC_BUILDER = tr.v.NumericBuilder.createExponential(
20 tr.v.Unit.byName.timeDurationInMs_smallerIsBetter,
21 tr.b.Range.fromExplicitRange(1e-3, 1e6), 50);
22
23 var ENERGY_NUMERIC_BUILDER = tr.v.NumericBuilder.createExponential(
24 tr.v.Unit.byName.energyInJoules_smallerIsBetter,
25 tr.b.Range.fromExplicitRange(1e-3, 1e3), 50);
26
27 var POWER_NUMERIC_BUILDER = tr.v.NumericBuilder.createExponential(
28 tr.v.Unit.byName.powerInWatts_smallerIsBetter,
29 tr.b.Range.fromExplicitRange(1e-3, 1e3), 50);
30
31 function railPowerMetricHelper(values, model) { 19 function railPowerMetricHelper(values, model) {
32 var railStageTimes = new Map(); 20 var railStageTimes = new Map();
33 var railStageEnergy = new Map(); 21 var railStageEnergy = new Map();
34 22
35 for (var exp of model.userModel.expectations) { 23 for (var exp of model.userModel.expectations) {
36 var currTitle = exp.title.toLowerCase().replace(' ', '_'); 24 var currTitle = exp.title.toLowerCase().replace(' ', '_');
37 var currTime = 0; 25 var currTime = 0;
38 var currEnergy = 0; 26 var currEnergy = 0;
39 if (railStageTimes.has(currTitle)) { 27 if (railStageTimes.has(currTitle)) {
40 currTime = railStageTimes.get(currTitle); 28 currTime = railStageTimes.get(currTitle);
41 currEnergy = railStageEnergy.get(currTitle); 29 currEnergy = railStageEnergy.get(currTitle);
42 } 30 }
43 var thisTime = exp.duration; 31 var thisTime = exp.duration;
44 var thisEnergy = model.device.powerSeries.getEnergyConsumedInJ( 32 var thisEnergy = model.device.powerSeries.getEnergyConsumedInJ(
45 exp.start, exp.end); 33 exp.start, exp.end);
46 railStageTimes.set(currTitle, currTime + thisTime); 34 railStageTimes.set(currTitle, currTime + thisTime);
47 railStageEnergy.set(currTitle, currEnergy + thisEnergy); 35 railStageEnergy.set(currTitle, currEnergy + thisEnergy);
48 } 36 }
49 37
50 for (var [title, durationMs] of railStageTimes) { 38 for (var [title, durationMs] of railStageTimes) {
51 var energyInJ = railStageEnergy.get(title); 39 var energyInJ = railStageEnergy.get(title);
52 var durationInMs = railStageTimes.get(title); 40 var durationInMs = railStageTimes.get(title);
53 var durationInS = tr.v.convertUnit(durationInMs, 41 var durationInS = tr.v.convertUnit(durationInMs,
54 tr.v.UnitScale.Metric.MILLI, tr.v.UnitScale.Metric.NONE); 42 tr.v.UnitScale.Metric.MILLI, tr.v.UnitScale.Metric.NONE);
55 var powerInW = energyInJ / durationInS; 43 var powerInW = energyInJ / durationInS;
56 44
57 var durationHist = TIME_NUMERIC_BUILDER.build(); 45 var durationHist = new tr.v.Histogram(
46 tr.v.Unit.byName.timeDurationInMs_smallerIsBetter);
58 durationHist.add(durationInMs); 47 durationHist.add(durationInMs);
59 values.addValue(new tr.v.NumericValue('total_time_' + title, durationHist, 48 values.addValue(new tr.v.NumericValue('total_time_' + title, durationHist,
60 {description: 'Time spent in RAIL stage ' + title})); 49 {description: 'Time spent in RAIL stage ' + title}));
61 50
62 var energyHist = ENERGY_NUMERIC_BUILDER.build(); 51 var energyHist = new tr.v.Histogram(
52 tr.v.Unit.byName.energyInJoules_smallerIsBetter);
63 energyHist.add(energyInJ); 53 energyHist.add(energyInJ);
64 values.addValue(new tr.v.NumericValue('total_energy_' + title, energyHist, 54 values.addValue(new tr.v.NumericValue('total_energy_' + title, energyHist,
65 {description: 'Energy consumed in RAIL stage ' + title})); 55 {description: 'Energy consumed in RAIL stage ' + title}));
66 56
67 var powerHist = POWER_NUMERIC_BUILDER.build(); 57 var powerHist = new tr.v.Histogram(
58 tr.v.Unit.byName.powerInWatts_smallerIsBetter);
68 powerHist.add(powerInW); 59 powerHist.add(powerInW);
69 values.addValue(new tr.v.NumericValue('energy_consumption_rate_' + title, 60 values.addValue(new tr.v.NumericValue('energy_consumption_rate_' + title,
70 powerHist, 61 powerHist, {description: 'Energy consumption rate for RAIL stage ' +
71 {description: 'Energy consumption rate for RAIL stage ' + title})); 62 title}));
72 } 63 }
73 } 64 }
74 65
75 function railPowerMetric(values, model) { 66 function railPowerMetric(values, model) {
76 if (!model.device.powerSeries) 67 if (!model.device.powerSeries)
77 return; 68 return;
78 railPowerMetricHelper(values, model); 69 railPowerMetricHelper(values, model);
79 } 70 }
80 71
81 tr.metrics.MetricRegistry.register(railPowerMetric); 72 tr.metrics.MetricRegistry.register(railPowerMetric);
82 73
83 return { 74 return {
84 railPowerMetric: railPowerMetric 75 railPowerMetric: railPowerMetric
85 }; 76 };
86 }); 77 });
87 </script> 78 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698