diff options
Diffstat (limited to 'chromium/third_party/catapult/tracing/tracing/ui/extras/system_stats/system_stats_instance_track.html')
-rw-r--r-- | chromium/third_party/catapult/tracing/tracing/ui/extras/system_stats/system_stats_instance_track.html | 355 |
1 files changed, 0 insertions, 355 deletions
diff --git a/chromium/third_party/catapult/tracing/tracing/ui/extras/system_stats/system_stats_instance_track.html b/chromium/third_party/catapult/tracing/tracing/ui/extras/system_stats/system_stats_instance_track.html deleted file mode 100644 index 9aa10212de6..00000000000 --- a/chromium/third_party/catapult/tracing/tracing/ui/extras/system_stats/system_stats_instance_track.html +++ /dev/null @@ -1,355 +0,0 @@ -<!DOCTYPE html> -<!-- -Copyright (c) 2013 The Chromium Authors. All rights reserved. -Use of this source code is governed by a BSD-style license that can be -found in the LICENSE file. ---> - -<link rel="stylesheet" - href="/tracing/ui/extras/system_stats/system_stats_instance_track.css"> - -<link rel="import" href="/tracing/base/sorted_array_utils.html"> -<link rel="import" href="/tracing/ui/tracks/stacked_bars_track.html"> -<link rel="import" href="/tracing/ui/tracks/object_instance_track.html"> -<link rel="import" href="/tracing/ui/base/event_presenter.html"> -<link rel="import" href="/tracing/ui/base/ui.html"> - -<script> -'use strict'; - -tr.exportTo('tr.ui.e.system_stats', function() { - var EventPresenter = tr.ui.b.EventPresenter; - - var statCount; - - var excludedStats = {'meminfo': { - 'pswpin': 0, - 'pswpout': 0, - 'pgmajfault': 0}, - 'diskinfo': { - 'io': 0, - 'io_time': 0, - 'read_time': 0, - 'reads': 0, - 'reads_merged': 0, - 'sectors_read': 0, - 'sectors_written': 0, - 'weighted_io_time': 0, - 'write_time': 0, - 'writes': 0, - 'writes_merged': 0}, - 'swapinfo': {} - }; - - /** - * Tracks that display system stats data. - * - * @constructor - * @extends {StackedBarsTrack} - */ - - var SystemStatsInstanceTrack = tr.ui.b.define( - 'tr-ui-e-system-stats-instance-track', tr.ui.tracks.StackedBarsTrack); - - SystemStatsInstanceTrack.prototype = { - - __proto__: tr.ui.tracks.StackedBarsTrack.prototype, - - decorate: function(viewport) { - tr.ui.tracks.StackedBarsTrack.prototype.decorate.call(this, viewport); - this.classList.add('tr-ui-e-system-stats-instance-track'); - this.objectInstance_ = null; - }, - - set objectInstances(objectInstances) { - if (!objectInstances) { - this.objectInstance_ = []; - return; - } - if (objectInstances.length != 1) - throw new Error('Bad object instance count.'); - this.objectInstance_ = objectInstances[0]; - if (this.objectInstance_ !== null) { - this.computeRates_(this.objectInstance_.snapshots); - this.maxStats_ = this.computeMaxStats_( - this.objectInstance_.snapshots); - } - }, - - computeRates_: function(snapshots) { - for (var i = 0; i < snapshots.length; i++) { - var snapshot = snapshots[i]; - var stats = snapshot.getStats(); - var prevSnapshot; - var prevStats; - - if (i == 0) { - // Deltas will be zero. - prevSnapshot = snapshots[0]; - } else { - prevSnapshot = snapshots[i - 1]; - } - prevStats = prevSnapshot.getStats(); - var timeIntervalSeconds = (snapshot.ts - prevSnapshot.ts) / 1000; - // Prevent divide by zero. - if (timeIntervalSeconds == 0) - timeIntervalSeconds = 1; - - this.computeRatesRecursive_(prevStats, stats, - timeIntervalSeconds); - } - }, - - computeRatesRecursive_: function(prevStats, stats, - timeIntervalSeconds) { - for (var statName in stats) { - if (stats[statName] instanceof Object) { - this.computeRatesRecursive_(prevStats[statName], - stats[statName], - timeIntervalSeconds); - } else { - if (statName == 'sectors_read') { - stats['bytes_read_per_sec'] = (stats['sectors_read'] - - prevStats['sectors_read']) * - 512 / timeIntervalSeconds; - } - if (statName == 'sectors_written') { - stats['bytes_written_per_sec'] = - (stats['sectors_written'] - - prevStats['sectors_written']) * - 512 / timeIntervalSeconds; - } - if (statName == 'pgmajfault') { - stats['pgmajfault_per_sec'] = (stats['pgmajfault'] - - prevStats['pgmajfault']) / - timeIntervalSeconds; - } - if (statName == 'pswpin') { - stats['bytes_swpin_per_sec'] = (stats['pswpin'] - - prevStats['pswpin']) * - 1000 / timeIntervalSeconds; - } - if (statName == 'pswpout') { - stats['bytes_swpout_per_sec'] = (stats['pswpout'] - - prevStats['pswpout']) * - 1000 / timeIntervalSeconds; - } - } - } - }, - - computeMaxStats_: function(snapshots) { - var maxStats = new Object(); - statCount = 0; - - for (var i = 0; i < snapshots.length; i++) { - var snapshot = snapshots[i]; - var stats = snapshot.getStats(); - - this.computeMaxStatsRecursive_(stats, maxStats, - excludedStats); - } - - return maxStats; - }, - - computeMaxStatsRecursive_: function(stats, maxStats, excludedStats) { - for (var statName in stats) { - if (stats[statName] instanceof Object) { - if (!(statName in maxStats)) - maxStats[statName] = new Object(); - - var excludedNested; - if (excludedStats && statName in excludedStats) - excludedNested = excludedStats[statName]; - else - excludedNested = null; - - this.computeMaxStatsRecursive_(stats[statName], - maxStats[statName], - excludedNested); - } else { - if (excludedStats && statName in excludedStats) - continue; - if (!(statName in maxStats)) { - maxStats[statName] = 0; - statCount++; - } - if (stats[statName] > maxStats[statName]) - maxStats[statName] = stats[statName]; - } - } - }, - - get height() { - return window.getComputedStyle(this).height; - }, - - set height(height) { - this.style.height = height; - }, - - draw: function(type, viewLWorld, viewRWorld) { - switch (type) { - case tr.ui.tracks.DrawType.GENERAL_EVENT: - this.drawStatBars_(viewLWorld, viewRWorld); - break; - } - }, - - drawStatBars_: function(viewLWorld, viewRWorld) { - var ctx = this.context(); - var pixelRatio = window.devicePixelRatio || 1; - - var bounds = this.getBoundingClientRect(); - var width = bounds.width * pixelRatio; - var height = (bounds.height * pixelRatio) / statCount; - - // Culling parameters. - var vp = this.viewport.currentDisplayTransform; - - // Scale by the size of the largest snapshot. - var maxStats = this.maxStats_; - - var objectSnapshots = this.objectInstance_.snapshots; - var lowIndex = tr.b.findLowIndexInSortedArray( - objectSnapshots, - function(snapshot) { - return snapshot.ts; - }, - viewLWorld); - - // Assure that the stack with the left edge off screen still gets drawn - if (lowIndex > 0) - lowIndex -= 1; - - for (var i = lowIndex; i < objectSnapshots.length; ++i) { - var snapshot = objectSnapshots[i]; - var trace = snapshot.getStats(); - var currentY = height; - - var left = snapshot.ts; - if (left > viewRWorld) - break; - var leftView = vp.xWorldToView(left); - if (leftView < 0) - leftView = 0; - - // Compute the edges for the column graph bar. - var right; - if (i != objectSnapshots.length - 1) { - right = objectSnapshots[i + 1].ts; - } else { - // If this is the last snaphot of multiple snapshots, use the width of - // the previous snapshot for the width. - if (objectSnapshots.length > 1) - right = objectSnapshots[i].ts + (objectSnapshots[i].ts - - objectSnapshots[i - 1].ts); - else - // If there's only one snapshot, use max bounds as the width. - right = this.objectInstance_.parent.model.bounds.max; - } - - var rightView = vp.xWorldToView(right); - if (rightView > width) - rightView = width; - - // Floor the bounds to avoid a small gap between stacks. - leftView = Math.floor(leftView); - rightView = Math.floor(rightView); - - // Descend into nested stats. - this.drawStatBarsRecursive_(snapshot, - leftView, - rightView, - height, - trace, - maxStats, - currentY); - - if (i == lowIndex) - this.drawStatNames_(leftView, height, currentY, '', maxStats); - } - ctx.lineWidth = 1; - }, - - drawStatBarsRecursive_: function(snapshot, - leftView, - rightView, - height, - stats, - maxStats, - currentY) { - var ctx = this.context(); - - for (var statName in maxStats) { - if (stats[statName] instanceof Object) { - // Use the y-position returned from the recursive call. - currentY = this.drawStatBarsRecursive_(snapshot, - leftView, - rightView, - height, - stats[statName], - maxStats[statName], - currentY); - } else { - var maxStat = maxStats[statName]; - - // Draw a bar for the stat. The height of the bar is scaled - // against the largest value of the stat across all snapshots. - ctx.fillStyle = EventPresenter.getBarSnapshotColor( - snapshot, Math.round(currentY / height)); - - var barHeight; - - if (maxStat > 0) { - barHeight = height * Math.max(stats[statName], 0) / maxStat; - } else { - barHeight = 0; - } - - ctx.fillRect(leftView, currentY - barHeight, - Math.max(rightView - leftView, 1), barHeight); - - currentY += height; - } - } - - // Return the updated y-position. - return currentY; - }, - - drawStatNames_: function(leftView, height, currentY, prefix, maxStats) { - var ctx = this.context(); - - ctx.textAlign = 'end'; - ctx.font = '12px Arial'; - ctx.fillStyle = '#000000'; - for (var statName in maxStats) { - if (maxStats[statName] instanceof Object) { - currentY = this.drawStatNames_(leftView, height, currentY, - statName, maxStats[statName]); - } else { - var fullname = statName; - - if (prefix != '') - fullname = prefix + ' :: ' + statName; - - ctx.fillText(fullname, leftView - 10, currentY - height / 4); - currentY += height; - } - } - - return currentY; - } - }; - - tr.ui.tracks.ObjectInstanceTrack.register( - SystemStatsInstanceTrack, - {typeName: 'base::TraceEventSystemStatsMonitor::SystemStats'}); - - return { - SystemStatsInstanceTrack: SystemStatsInstanceTrack - }; -}); -</script> |