OLD | NEW |
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> |
OLD | NEW |