| 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/value/histogram.html"> | 9 <link rel="import" href="/tracing/value/histogram.html"> |
| 10 <link rel="import" href="/tracing/value/value.html"> | |
| 11 | 10 |
| 12 <script> | 11 <script> |
| 13 'use strict'; | 12 'use strict'; |
| 14 | 13 |
| 15 tr.exportTo('tr.metrics.sh', function() { | 14 tr.exportTo('tr.metrics.sh', function() { |
| 16 function getCpuSnapshotsFromModel(model) { | 15 function getCpuSnapshotsFromModel(model) { |
| 17 var snapshots = []; | 16 var snapshots = []; |
| 18 for (var pid in model.processes) { | 17 for (var pid in model.processes) { |
| 19 var snapshotInstances = model.processes[pid].objects.getAllInstancesNamed( | 18 var snapshotInstances = model.processes[pid].objects.getAllInstancesNamed( |
| 20 'CPUSnapshots'); | 19 'CPUSnapshots'); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 41 return processSums; | 40 return processSums; |
| 42 } | 41 } |
| 43 | 42 |
| 44 function buildNumericsFromSnapshots(snapshots) { | 43 function buildNumericsFromSnapshots(snapshots) { |
| 45 var processNumerics = new Map(); | 44 var processNumerics = new Map(); |
| 46 for (var snapshot of snapshots) { | 45 for (var snapshot of snapshots) { |
| 47 var processSums = getProcessSumsFromSnapshot(snapshot); | 46 var processSums = getProcessSumsFromSnapshot(snapshot); |
| 48 for (var [processName, processData] of processSums.entries()) { | 47 for (var [processName, processData] of processSums.entries()) { |
| 49 if (!(processNumerics.has(processName))) { | 48 if (!(processNumerics.has(processName))) { |
| 50 processNumerics.set(processName, { | 49 processNumerics.set(processName, { |
| 51 numeric: new tr.v.Histogram( | 50 numeric: new tr.v.Histogram('cpu:percent:' + processName, |
| 52 tr.b.Unit.byName.normalizedPercentage_smallerIsBetter), | 51 tr.b.Unit.byName.normalizedPercentage_smallerIsBetter), |
| 53 paths: new Set() | 52 paths: new Set() |
| 54 }); | 53 }); |
| 55 } | 54 } |
| 56 processNumerics.get(processName).numeric.addSample( | 55 processNumerics.get(processName).numeric.addSample( |
| 57 processData.sum / 100.0); | 56 processData.sum / 100.0); |
| 58 for (var path of processData.paths) | 57 for (var path of processData.paths) |
| 59 processNumerics.get(processName).paths.add(path); | 58 processNumerics.get(processName).paths.add(path); |
| 60 } | 59 } |
| 61 } | 60 } |
| 62 return processNumerics; | 61 return processNumerics; |
| 63 } | 62 } |
| 64 | 63 |
| 65 function cpuProcessMetric(values, model) { | 64 function cpuProcessMetric(values, model) { |
| 66 var snapshots = getCpuSnapshotsFromModel(model); | 65 var snapshots = getCpuSnapshotsFromModel(model); |
| 67 var processNumerics = buildNumericsFromSnapshots(snapshots); | 66 var processNumerics = buildNumericsFromSnapshots(snapshots); |
| 68 for (var [processName, processData] of processNumerics.entries()) { | 67 for (var [processName, processData] of processNumerics) { |
| 69 var numeric = processData.numeric; | 68 var numeric = processData.numeric; |
| 70 // Treat missing snapshots as zeros. A process is missing from a snapshots | 69 // Treat missing snapshots as zeros. A process is missing from a snapshots |
| 71 // when its CPU usage was below minimum threshold when the snapshot was | 70 // when its CPU usage was below minimum threshold when the snapshot was |
| 72 // taken. | 71 // taken. |
| 73 var missingSnapshotCount = snapshots.length - numeric.numValues; | 72 var missingSnapshotCount = snapshots.length - numeric.numValues; |
| 74 for (var i = 0; i < missingSnapshotCount; i++) | 73 for (var i = 0; i < missingSnapshotCount; i++) |
| 75 numeric.addSample(0); | 74 numeric.addSample(0); |
| 76 var value = new tr.v.NumericValue('cpu:percent:' + processName, numeric); | 75 numeric.diagnostics.set('paths', new |
| 77 value.diagnostics.set('paths', new | |
| 78 tr.v.d.Generic([...processData.paths])); | 76 tr.v.d.Generic([...processData.paths])); |
| 79 values.addValue(value); | 77 values.addHistogram(numeric); |
| 80 } | 78 } |
| 81 } | 79 } |
| 82 | 80 |
| 83 tr.metrics.MetricRegistry.register(cpuProcessMetric); | 81 tr.metrics.MetricRegistry.register(cpuProcessMetric); |
| 84 | 82 |
| 85 return { | 83 return { |
| 86 cpuProcessMetric: cpuProcessMetric | 84 cpuProcessMetric: cpuProcessMetric |
| 87 }; | 85 }; |
| 88 }); | 86 }); |
| 89 </script> | 87 </script> |
| OLD | NEW |