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/metrics/metric_registry.html"> | 8 <link rel="import" href="/tracing/metrics/metric_registry.html"> |
9 <link rel="import" href="/tracing/metrics/system_health/utils.html"> | 9 <link rel="import" href="/tracing/metrics/system_health/utils.html"> |
10 <link rel="import" href="/tracing/model/model.html"> | 10 <link rel="import" href="/tracing/model/model.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/value.html"> | 12 <link rel="import" href="/tracing/value/value.html"> |
13 | 13 |
14 <script> | 14 <script> |
15 'use strict'; | 15 'use strict'; |
16 | 16 |
17 tr.exportTo('tr.metrics.sh', function() { | 17 tr.exportTo('tr.metrics.sh', function() { |
18 var LATENCY_NUMERIC_BUILDER = tr.v.NumericBuilder.createExponential( | |
19 tr.v.Unit.byName.timeDurationInMs_smallerIsBetter, | |
20 tr.b.Range.fromExplicitRange(1e-3, 1e3), 30); | |
21 | |
22 function syncIsComplete(markers) { | 18 function syncIsComplete(markers) { |
23 return markers.length === 2; | 19 return markers.length === 2; |
24 } | 20 } |
25 | 21 |
26 function syncInvolvesTelemetry(markers) { | 22 function syncInvolvesTelemetry(markers) { |
27 for (var marker of markers) | 23 for (var marker of markers) |
28 if (marker.domainId === tr.model.ClockDomainId.TELEMETRY) | 24 if (marker.domainId === tr.model.ClockDomainId.TELEMETRY) |
29 return true; | 25 return true; |
30 | 26 |
31 return false; | 27 return false; |
32 } | 28 } |
33 | 29 |
34 function clockSyncLatencyMetric(values, model) { | 30 function clockSyncLatencyMetric(values, model) { |
35 for (var markers of model.clockSyncManager.markersBySyncId.values()) { | 31 for (var markers of model.clockSyncManager.markersBySyncId.values()) { |
36 var latency = undefined; | 32 var latency = undefined; |
37 var targetDomain = undefined; | 33 var targetDomain = undefined; |
38 if (!syncIsComplete(markers) || !syncInvolvesTelemetry(markers)) | 34 if (!syncIsComplete(markers) || !syncInvolvesTelemetry(markers)) |
39 continue; | 35 continue; |
40 | 36 |
41 for (var marker of markers) { | 37 for (var marker of markers) { |
42 var domain = marker.domainId; | 38 var domain = marker.domainId; |
43 if (domain === tr.model.ClockDomainId.TELEMETRY) | 39 if (domain === tr.model.ClockDomainId.TELEMETRY) |
44 latency = (marker.endTs - marker.startTs); | 40 latency = (marker.endTs - marker.startTs); |
45 else | 41 else |
46 targetDomain = domain.toLowerCase(); | 42 targetDomain = domain.toLowerCase(); |
47 } | 43 } |
48 | 44 |
49 var hist = LATENCY_NUMERIC_BUILDER.build(); | 45 var hist = new tr.v.Histogram( |
| 46 tr.v.Unit.byName.timeDurationInMs_smallerIsBetter, |
| 47 tr.v.HistogramBinBoundaries.createExponential(1e-3, 1e3, 30)); |
50 hist.add(latency); | 48 hist.add(latency); |
51 values.addValue(new tr.v.NumericValue( | 49 values.addValue(new tr.v.NumericValue( |
52 'clock_sync_latency_' + targetDomain, hist, | 50 'clock_sync_latency_' + targetDomain, hist, |
53 {description: 'Clock sync latency for domain ' + targetDomain})); | 51 {description: 'Clock sync latency for domain ' + targetDomain})); |
54 } | 52 } |
55 }; | 53 }; |
56 | 54 |
57 tr.metrics.MetricRegistry.register(clockSyncLatencyMetric); | 55 tr.metrics.MetricRegistry.register(clockSyncLatencyMetric); |
58 | 56 |
59 return { | 57 return { |
60 clockSyncLatencyMetric: clockSyncLatencyMetric | 58 clockSyncLatencyMetric: clockSyncLatencyMetric |
61 }; | 59 }; |
62 }); | 60 }); |
63 </script> | 61 </script> |
OLD | NEW |