blob: fb2539ea50e7f115d953740561e87bbc441744fd [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright 2016 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="import" href="/tracing/base/iteration_helpers.html">
<link rel="import" href="/tracing/base/range.html">
<link rel="import" href="/tracing/core/test_utils.html">
<link rel="import" href="/tracing/metrics/system_health/memory_metric.html">
<link rel="import" href="/tracing/model/container_memory_dump.html">
<link rel="import" href="/tracing/model/memory_dump_test_utils.html">
<link rel="import" href="/tracing/model/vm_region.html">
<link rel="import" href="/tracing/value/value_set.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
var VMRegion = tr.model.VMRegion;
var VMRegionClassificationNode = tr.model.VMRegionClassificationNode;
var BACKGROUND = tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;
var LIGHT = tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;
var DETAILED = tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;
var SIZE_DELTA = tr.model.MemoryDumpTestUtils.SIZE_DELTA;
var addProcessMemoryDump = tr.model.MemoryDumpTestUtils.addProcessMemoryDump;
var addGlobalMemoryDump = tr.model.MemoryDumpTestUtils.addGlobalMemoryDump;
var newAllocatorDump = tr.model.MemoryDumpTestUtils.newAllocatorDump;
var addChildDump = tr.model.MemoryDumpTestUtils.addChildDump;
var addOwnershipLink = tr.model.MemoryDumpTestUtils.addOwnershipLink;
var unitlessNumber_smallerIsBetter =
tr.b.Unit.byName.unitlessNumber_smallerIsBetter;
var sizeInBytes_smallerIsBetter =
tr.b.Unit.byName.sizeInBytes_smallerIsBetter;
function memoryMetricTest(
name, modelCallback, opt_options, expectedNumerics) {
test(name, function() {
// Create a model and a fake value list.
var model = tr.c.TestUtils.newModel(modelCallback);
var valueNameToValues = {};
var fakeValueList = {
addHistogram: function(value) {
var values = valueNameToValues[value.name];
if (values === undefined)
valueNameToValues[value.name] = values = [];
values.push(value);
}
};
// Run the memory metric on the model.
tr.metrics.sh.memoryMetric(fakeValueList, model, opt_options);
// Check that the names of the added values match expectations.
var actualValueNames = Object.keys(valueNameToValues).sort();
var expectedValueNames = Object.keys(expectedNumerics).sort();
assert.deepEqual(actualValueNames, expectedValueNames, {
// Build the long error message lazily.
toString: function() {
var errorMessageParts = [];
function addValueNamesToError(type, valueNames, otherValueNames) {
var otherValueNamesSet = new Set(otherValueNames);
errorMessageParts.push(type, ' value names:');
if (valueNames.length === 0) {
errorMessageParts.push('\n(empty)');
} else {
valueNames.forEach(function(valueName) {
errorMessageParts.push('\n');
if (!otherValueNamesSet.has(valueName))
errorMessageParts.push('+++');
errorMessageParts.push(valueName);
});
}
}
addValueNamesToError('Expected', expectedValueNames,
actualValueNames);
errorMessageParts.push('\n');
addValueNamesToError('Actual', actualValueNames, expectedValueNames);
return errorMessageParts.join('');
}
});
// Check that the numeric values of the added values match expectations.
tr.b.iterItems(valueNameToValues, function(valueName, actualValues) {
assert.lengthOf(actualValues, 1,
'Multiple \'' + valueName + '\' values');
var actualHistogram = actualValues[0];
assert.instanceOf(actualHistogram, tr.v.Histogram);
var expectedHistogram = expectedNumerics[valueName];
assert.strictEqual(actualHistogram.unit, expectedHistogram.unit,
'Invalid \'' + valueName + '\' unit (expected: ' +
expectedHistogram.unit.unitName, + ', actual: ' +
actualHistogram.unit.unitName + ')');
if (!(expectedHistogram.value instanceof Array))
assert.fail('Test sanity check: expected value must be an array');
assert.instanceOf(actualHistogram, tr.v.Histogram,
'Invalid \'' + valueName + '\' class');
assert.strictEqual(actualHistogram.numValues,
expectedHistogram.value.length,
'Invalid \'' + valueName + '\' Histogram numValues');
assert.closeTo(actualHistogram.sum,
expectedHistogram.value.reduce((a, b) => a + b, 0), SIZE_DELTA,
'Invalid \'' + valueName + '\' Histogram sum');
// Check that the bin counts match.
var binToCount = new Map();
expectedHistogram.value.forEach(function(value) {
var bin = actualHistogram.getBinForValue(value);
binToCount.set(bin, (binToCount.get(bin) || 0) + 1);
});
actualHistogram.allBins.forEach(function(bin) {
binToCount.set(bin, (binToCount.get(bin) || 0) - bin.count);
});
binToCount.forEach(function(count, bin) {
assert.strictEqual(count, 0, 'Invalid \'' + valueName +
'\' bin count for range ' + bin.min + '-' + bin.max);
});
// Check that the description matches expectations.
assert.strictEqual(
actualHistogram.description, expectedHistogram.description,
'Invalid \'' + valueName + '\' description');
});
});
}
function createProcessWithName(model, name) {
var uniquePid =
Math.max.apply(null, Object.keys(model.processes).concat([0])) + 1;
var process = model.getOrCreateProcess(uniquePid);
process.name = name;
return process;
}
function createChromeBrowserProcess(model) {
var process = createProcessWithName(model, 'Browser');
process.getOrCreateThread(1).name = 'CrBrowserMain';
return process;
}
function createWebViewProcess(model) {
var process = createChromeBrowserProcess(model);
process.getOrCreateThread(2).name = 'Chrome_InProcRendererThread';
return process;
}
memoryMetricTest('noDumps_noBrowser', function(model) {
createProcessWithName(model, 'Non-browser');
}, undefined /* opt_options */, {
/* no values */
});
memoryMetricTest('noDumps_chrome', function(model) {
createChromeBrowserProcess(model);
}, undefined /* opt_options */, {
'memory:chrome:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:light': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by Chrome ' +
'to the trace'
},
'memory:chrome:all_processes:dump_count': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by Chrome to the ' +
'trace'
}
});
memoryMetricTest('noDumps_multipleBrowsers', function(model) {
createChromeBrowserProcess(model);
createWebViewProcess(model);
createProcessWithName(model, 'Non-browser');
createChromeBrowserProcess(model);
}, undefined /* opt_options */, {
'memory:chrome2:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by Chrome(2) ' +
'to the trace'
},
'memory:chrome2:all_processes:dump_count:light': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by Chrome(2) to ' +
'the trace'
},
'memory:chrome2:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by ' +
'Chrome(2) to the trace'
},
'memory:chrome2:all_processes:dump_count': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by Chrome(2) to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:light': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by Chrome ' +
'to the trace'
},
'memory:chrome:all_processes:dump_count': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by Chrome to the ' +
'trace'
},
'memory:webview:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by WebView ' +
'to the trace'
},
'memory:webview:all_processes:dump_count:light': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by WebView to ' +
'the trace'
},
'memory:webview:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by WebView ' +
'to the trace'
},
'memory:webview:all_processes:dump_count': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by WebView to the ' +
'trace'
}
});
memoryMetricTest('dumpCountsOnly_unknownBrowser', function(model) {
addGlobalMemoryDump(model, {ts: 45, levelOfDetail: DETAILED});
addGlobalMemoryDump(model, {ts: 65, levelOfDetail: BACKGROUND});
addGlobalMemoryDump(model, {ts: 68, levelOfDetail: LIGHT});
addGlobalMemoryDump(model, {ts: 89, levelOfDetail: DETAILED});
}, undefined /* opt_options */, {
'memory:unknown_browser:all_processes:dump_count:detailed': {
value: [2],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by an ' +
'unknown browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:light': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by an unknown ' +
'browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:background': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by an ' +
'unknown browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count': {
value: [4],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by an unknown ' +
'browser to the trace'
}
});
memoryMetricTest('dumpCountsOnly_webview', function(model) {
var p = createWebViewProcess(model);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 45, levelOfDetail: LIGHT}), p, {ts: 45});
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 68, levelOfDetail: LIGHT}), p, {ts: 68});
}, undefined /* opt_options */, {
'memory:webview:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by WebView ' +
'to the trace'
},
'memory:webview:all_processes:dump_count:light': {
value: [2],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by WebView to ' +
'the trace'
},
'memory:webview:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by WebView ' +
'to the trace'
},
'memory:webview:all_processes:dump_count': {
value: [2],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by WebView to the ' +
'trace'
},
'memory:webview:all_processes:process_count': {
value: [1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in WebView'
},
'memory:webview:browser_process:process_count': {
value: [1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in WebView'
}
});
memoryMetricTest('generalValues_chrome', function(model) {
var pBrowser = createChromeBrowserProcess(model);
var pRendererA = createProcessWithName(model, 'Renderer');
var pRendererB = createProcessWithName(model, 'Renderer');
var pPpapi = createProcessWithName(model, 'PPAPI Process');
var pUnknown = createProcessWithName(model, undefined);
// Timestamp 1.
var gmd1 = addGlobalMemoryDump(model, {ts: 20});
var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, {ts: 19});
pmdBrowser1.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser1, 'malloc', {numerics: {
size: 8,
allocated_objects_size: 4
}})
];
pmdBrowser1.totals = {
residentBytes: 200,
peakResidentBytes: 230
};
var pmdRendererA1 = addProcessMemoryDump(gmd1, pRendererA, {ts: 20});
pmdRendererA1.memoryAllocatorDumps = (function() {
var mallocDump =
newAllocatorDump(pmdRendererA1, 'malloc', {numerics: {size: 16}});
var partitionAllocDump =
newAllocatorDump(pmdRendererA1, 'partition_alloc');
var v8Dump = newAllocatorDump(pmdRendererA1, 'v8',
{numerics: {code_and_metadata_size: 16}});
addOwnershipLink(
addChildDump(partitionAllocDump, 'allocated_objects',
{numerics: {size: 32}}),
addChildDump(partitionAllocDump, 'partitions',
{numerics: {size: 24}}));
return [mallocDump, partitionAllocDump, v8Dump];
})();
var pmdGpu1 = addProcessMemoryDump(gmd1, pPpapi, {ts: 21});
pmdGpu1.memoryAllocatorDumps = [
newAllocatorDump(pmdGpu1, 'gpu', {numerics: {
size: 30,
allocated_objects_size: 25
}})
];
// Timestamp 2.
var gmd2 = addGlobalMemoryDump(model, {ts: 40});
var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, {ts: 41});
pmdBrowser2.memoryAllocatorDumps = (function() {
var mallocDump = newAllocatorDump(pmdBrowser2, 'malloc',
{numerics: {size: 120}});
var tracingDump =
newAllocatorDump(pmdBrowser2, 'tracing', {numerics: {size: 40}});
return [mallocDump, tracingDump];
})();
var pmdRendererA2 = addProcessMemoryDump(gmd2, pRendererA, {ts: 39});
pmdRendererA2.memoryAllocatorDumps = (function() {
var partitionAllocDump =
newAllocatorDump(pmdRendererA2, 'partition_alloc');
addOwnershipLink(
addChildDump(partitionAllocDump, 'allocated_objects',
{numerics: {size: 320}}),
addChildDump(partitionAllocDump, 'partitions',
{numerics: {size: 240}}));
var v8Dump = newAllocatorDump(pmdRendererA2, 'v8',
{numerics: {size: 650}});
var isolateDumpA = addChildDump(v8Dump, 'isolate_A');
addChildDump(isolateDumpA, 'malloc', {numerics: {
size: 1,
peak_size: 2
}});
var heapDumpA = addChildDump(isolateDumpA, 'heap_spaces', {numerics: {
size: 42,
allocated_objects_size: 36
}});
addChildDump(heapDumpA, 'code_space', {numerics: {
allocated_objects_size: 1,
size: 2
}});
addChildDump(heapDumpA, 'large_object_space', {numerics: {
allocated_objects_size: 3,
size: 4
}});
addChildDump(heapDumpA, 'map_space', {numerics: {
allocated_objects_size: 5,
size: 6,
}});
addChildDump(heapDumpA, 'new_space', {numerics: {
allocated_objects_size: 7,
size: 8
}});
addChildDump(heapDumpA, 'old_space', {numerics: {
allocated_objects_size: 9,
size: 10
}});
addChildDump(heapDumpA, 'other_spaces', {numerics: {
allocated_objects_size: 11,
size: 12
}});
var isolateDumpB = addChildDump(v8Dump, 'isolate_B');
addChildDump(isolateDumpB, 'malloc', {numerics: {
size: 10,
peak_size: 20
}});
var heapDumpB = addChildDump(isolateDumpB, 'heap_spaces', {numerics: {
size: 12,
allocated_objects_size: 6
}});
addChildDump(heapDumpB, 'code_space', {numerics: {
allocated_objects_size: 1,
size: 2
}});
addChildDump(heapDumpB, 'large_object_space', {numerics: {
allocated_objects_size: 1,
size: 2
}});
addChildDump(heapDumpB, 'map_space', {numerics: {
allocated_objects_size: 1,
size: 2,
}});
addChildDump(heapDumpB, 'new_space', {numerics: {
allocated_objects_size: 1,
size: 2
}});
addChildDump(heapDumpB, 'old_space', {numerics: {
allocated_objects_size: 1,
size: 2
}});
addChildDump(heapDumpB, 'other_spaces', {numerics: {
allocated_objects_size: 1,
size: 2
}});
var isolateDumpC = addChildDump(v8Dump, 'isolate_C');
addChildDump(isolateDumpC, 'malloc', {numerics: {
size: 100,
}});
addChildDump(isolateDumpC, 'heap_spaces', {numerics: {
size: 2,
allocated_objects_size: 1
}});
var isolateDumpD = addChildDump(v8Dump, 'isolate_D');
addChildDump(isolateDumpD, 'malloc', {numerics: {
peak_size: 200,
}});
return [partitionAllocDump, v8Dump];
})();
var pmdRendererB2 = addProcessMemoryDump(gmd2, pRendererB, {ts: 40});
pmdRendererB2.memoryAllocatorDumps = [
newAllocatorDump(pmdRendererB2, 'v8', {numerics: {
size: 970,
allocated_objects_size: 860,
bytecode_and_metadata_size: 678
}}),
newAllocatorDump(pmdRendererB2, 'malloc',
{numerics: {allocated_objects_size: 750}})
];
var pmdUnknown = addProcessMemoryDump(gmd2, pUnknown, {ts: 42});
pmdUnknown.memoryAllocatorDumps = [
newAllocatorDump(pmdRendererB2, 'v8', {numerics: {size: 111}})
];
// Timestamp 3.
var gmd3 = addGlobalMemoryDump(model, {ts: 60});
var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, {ts: 60});
pmdBrowser3.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser3, 'malloc', {numerics: {
size: 8000,
allocated_objects_size: 4000
}})
];
var pmdRendererB3 = addProcessMemoryDump(gmd3, pRendererB, {ts: 61});
// Intentionally pmdRendererB3.memoryAllocatorDumps undefined.
var pmdGpu3 = addProcessMemoryDump(gmd3, pPpapi, {ts: 59});
pmdGpu3.memoryAllocatorDumps = [
newAllocatorDump(pmdGpu3, 'gpu', {numerics: {size: 300}})
];
// Timestamp 4.
var gmd4 = addGlobalMemoryDump(model, {ts: 80});
var pmdBrowser4 = addProcessMemoryDump(gmd4, pBrowser, {ts: 81});
pmdBrowser4.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser4, 'malloc', {numerics: {size: 80000}})
];
var pmdRendererB4 = addProcessMemoryDump(gmd4, pRendererB, {ts: 79});
pmdRendererB4.memoryAllocatorDumps = (function() {
var v8Dump = newAllocatorDump(pmdRendererB4, 'v8', {numerics: {
code_and_metadata_size: 21,
bytecode_and_metadata_size: 35,
size: 9e5
}});
var partitionAllocDump = newAllocatorDump(pmdRendererB4,
'partition_alloc', {numerics: {size: 5e5}});
addOwnershipLink(partitionAllocDump, v8Dump);
return [v8Dump, partitionAllocDump];
})();
var pmdGpu4 = addProcessMemoryDump(gmd4, pPpapi, {ts: 80});
pmdGpu4.memoryAllocatorDumps = [
newAllocatorDump(pmdGpu4, 'gpu',
{numerics: {memtrack_pss: 666 /* ignored */}})
];
}, undefined /* opt_options */, {
'memory:chrome:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:light': {
value: [4],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by Chrome ' +
'to the trace'
},
'memory:chrome:all_processes:dump_count': {
value: [4],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by Chrome to the ' +
'trace'
},
'memory:chrome:all_processes:process_count': {
value: [3, 4, 3, 3],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:effective_size': {
value: [30 + (8 + 16) + 32, (120 - 40) + 320 + (650 + 970) + 111,
300 + 8000, 80000 + 5e5 + 4e5],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:allocated_objects_size': {
value: [25 + 4 + 32, (36 + 6 + 1) + 750 + 860 + 320 + 40, 4000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of all allocated objects reported by Chrome ' +
'for all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:peak_size':
{
value: [0, 2 + 20 + 200, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total peak size reported by Chrome for all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:resident_size': {
value: [200, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total resident set size (RSS) reported by the OS for all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:peak_resident_size': {
value: [230, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total peak resident set size reported by the OS for all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:resident_size': {
value: [200, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total resident set size (RSS) of system memory (RAM) ' +
'used by all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:peak_resident_size':
{
value: [230, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total peak resident set size of system memory (RAM) ' +
'used by all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:gpu:effective_size': {
value: [30, 0, 300, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of gpu in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:gpu:allocated_objects_size':
{
value: [25, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by gpu in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:malloc:effective_size': {
value: [8 + 16, 120 - 40, 8000, 80000],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:malloc:allocated_objects_size':
{
value: [4, 40 + 750, 4000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by malloc in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:partition_alloc:allocated_objects_size':
{
value: [32, 320, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by partition_alloc in ' +
'all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:partition_alloc:effective_size':
{
value: [32, 320, 0, 5e5],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of partition_alloc in all processes ' +
'in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:tracing:effective_size': {
value: [0, 40, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of tracing in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:allocated_by_malloc:effective_size':
{
value: [0, 1 + 10 + 100, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of objects allocated by malloc for v8 ' +
'in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:allocated_by_malloc:peak_size':
{
value: [0, 2 + 20 + 200, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'peak size of objects allocated by malloc for v8 ' +
'in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:code_and_metadata_size':
{
value: [16, 678, 0, 21 + 35],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of code and metadata reported by Chrome ' +
'for all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:code_and_metadata_size':
{
value: [16, 678, 0, 21 + 35],
unit: sizeInBytes_smallerIsBetter,
description: 'size of v8 code and metadata in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:allocated_objects_size':
{
value: [0, 36 + 6 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:effective_size': {
value: [0, 42 + 12 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:code_space:allocated_objects_size':
{
value: [0, 1 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap:code_space ' +
'in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:code_space:effective_size':
{
value: [0, 2 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:code_space in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:large_object_space:allocated_objects_size':
{
value: [0, 3 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by ' +
'v8:heap:large_object_space in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:large_object_space:effective_size':
{
value: [0, 4 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:large_object_space in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:map_space:allocated_objects_size':
{
value: [0, 5 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap:map_space ' +
'in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:map_space:effective_size':
{
value: [0, 6 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:map_space in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:new_space:allocated_objects_size':
{
value: [0, 7 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap:new_space ' +
'in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:new_space:effective_size':
{
value: [0, 8 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:new_space in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:old_space:allocated_objects_size':
{
value: [0, 9 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap:old_space ' +
'in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:heap:old_space:effective_size':
{
value: [0, 10 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:old_space in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:effective_size': {
value: [0, 650 + 970 + 111, 0, 4e5],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8 in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:allocated_objects_size':
{
value: [0, (36 + 6 + 1) + 860, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8 in all processes ' +
'in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:v8:peak_size':
{
value: [0, 2 + 20 + 200, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'peak size of v8 in all processes in Chrome'
},
'memory:chrome:browser_process:reported_by_os:peak_resident_size': {
value: [230, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total peak resident set size reported by the OS for the ' +
'browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:peak_resident_size':
{
value: [230, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total peak resident set size of system memory (RAM) ' +
'used by the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:resident_size': {
value: [200, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total resident set size (RSS) reported by the OS for the ' +
'browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:resident_size':
{
value: [200, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total resident set size (RSS) of system memory (RAM) ' +
'used by the browser process in Chrome'
},
'memory:chrome:browser_process:process_count': {
value: [1, 1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:effective_size': {
value: [8, (120 - 40), 8000, 80000],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for the browser ' +
'process in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:allocated_objects_size': {
value: [4 + 40, 0, 4000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of all allocated objects reported by Chrome ' +
'for the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:malloc:effective_size': {
value: [8, 120 - 40, 8000, 80000],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:malloc:allocated_objects_size':
{
value: [4 + 40, 0, 4000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by malloc in the ' +
'browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:tracing:effective_size': {
value: [0, 40, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of tracing in the browser process in Chrome'
},
'memory:chrome:ppapi_process:process_count': {
value: [1, 0, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of PPAPI processes in Chrome'
},
'memory:chrome:ppapi_process:reported_by_chrome:effective_size': {
value: [30, 0, 300, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for the PPAPI ' +
'process in Chrome'
},
'memory:chrome:ppapi_process:reported_by_chrome:allocated_objects_size': {
value: [25, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of all allocated objects reported by Chrome ' +
'for the PPAPI process in Chrome'
},
'memory:chrome:ppapi_process:reported_by_chrome:gpu:effective_size': {
value: [30, 0, 300, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of gpu in the PPAPI process in Chrome'
},
'memory:chrome:ppapi_process:reported_by_chrome:gpu:allocated_objects_size':
{
value: [25, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by gpu in the PPAPI ' +
'process in Chrome'
},
'memory:chrome:renderer_processes:process_count': {
value: [1, 2, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:effective_size': {
value: [16 + 32, 320 + 650 + 970, 0, 5e5 + 4e5],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:allocated_objects_size':
{
value: [32, (36 + 6 + 1) + 750 + 860 + 320, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of all allocated objects reported by ' +
'Chrome for renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:peak_size':
{
value: [0, 2 + 20 + 200, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total peak size reported by Chrome ' +
'for renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:malloc:effective_size':
{
value: [16, 0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in renderer processes in ' +
'Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:malloc:allocated_objects_size':
{
value: [0, 750, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by malloc in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:partition_alloc:allocated_objects_size':
{
value: [32, 320, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by partition_alloc in ' +
'renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:partition_alloc:effective_size':
{
value: [32, 320, 0, 5e5],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of partition_alloc in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:allocated_by_malloc:effective_size':
{
value: [0, 1 + 10 + 100, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of objects allocated by malloc for v8 ' +
'in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:allocated_by_malloc:peak_size':
{
value: [0, 2 + 20 + 200, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'peak size of objects allocated by malloc for v8 ' +
'in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:allocated_objects_size':
{
value: [0, 36 + 6 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:code_and_metadata_size':
{
value: [16, 678, 0, 21 + 35],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of code and metadata reported by Chrome ' +
'for renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:code_and_metadata_size':
{
value: [16, 678, 0, 21 + 35],
unit: sizeInBytes_smallerIsBetter,
description: 'size of v8 code and metadata in renderer processes ' +
'in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:effective_size':
{
value: [0, 42 + 12 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap in renderer processes ' +
'in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:code_space:allocated_objects_size':
{
value: [0, 1 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap:code_space ' +
'in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:code_space:effective_size':
{
value: [0, 2 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:code_space in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:large_object_space:allocated_objects_size':
{
value: [0, 3 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by ' +
'v8:heap:large_object_space in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:large_object_space:effective_size':
{
value: [0, 4 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:large_object_space in ' +
'renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:map_space:allocated_objects_size':
{
value: [0, 5 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap:map_space ' +
'in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:map_space:effective_size':
{
value: [0, 6 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:map_space in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:new_space:allocated_objects_size':
{
value: [0, 7 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap:new_space ' +
'in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:new_space:effective_size':
{
value: [0, 8 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:new_space in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:old_space:allocated_objects_size':
{
value: [0, 9 + 1, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8:heap:old_space ' +
'in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:heap:old_space:effective_size':
{
value: [0, 10 + 2, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8:heap:old_space in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:effective_size': {
value: [0, 650 + 970, 0, 4e5],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8 in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:allocated_objects_size':
{
value: [0, (36 + 6 + 1) + 860, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8 in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:v8:peak_size':
{
value: [0, 2 + 20 + 200, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'peak size of v8 in renderer processes in Chrome'
},
'memory:chrome:unknown_processes:process_count': {
value: [0, 1, 0, 0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of unknown processes in Chrome'
},
'memory:chrome:unknown_processes:reported_by_chrome:effective_size': {
value: [0, 111, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for unknown ' +
'processes in Chrome'
},
'memory:chrome:unknown_processes:reported_by_chrome:v8:effective_size': {
value: [0, 111, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8 in unknown processes in Chrome'
},
});
memoryMetricTest('detailedValues_unknownBrowser', function(model) {
var pBrowser = createProcessWithName(model, 'Browser');
var pRendererA = createProcessWithName(model, 'Renderer');
var pRendererB = createProcessWithName(model, 'Renderer');
var pRendererC = createProcessWithName(model, 'Renderer');
var pGpu = createProcessWithName(model, 'GPU Process');
// Timestamp 1.
var gmd1 = addGlobalMemoryDump(model, {ts: 10, levelOfDetail: DETAILED});
var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, {ts: 9});
pmdBrowser1.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 128, 0, '/dev/ashmem/dalvik-non moving space',
{privateDirtyResident: 8})
]);
var pmdRendererA1 = addProcessMemoryDump(gmd1, pRendererA, {ts: 10});
pmdRendererA1.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xEF01, 256, 0, '[anon:libc_malloc]',
{privateDirtyResident: 17})
]);
var pmdRendererB1 = addProcessMemoryDump(gmd1, pRendererB, {ts: 11});
pmdRendererB1.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0x2345, 512, 0, '[heap]',
{proportionalResident: 67, privateDirtyResident: 34})
]);
var pmdGpu1 = addProcessMemoryDump(gmd1, pGpu, {ts: 10});
pmdGpu1.memoryAllocatorDumps = (function() {
var gpuDump = newAllocatorDump(pmdGpu1, 'gpu');
var memtrackDump = addChildDump(gpuDump, 'android_memtrack');
addChildDump(memtrackDump, 'gl', {numerics: {memtrack_pss: 100}});
addChildDump(memtrackDump, 'graphics', {numerics: {memtrack_pss: 200}});
return [gpuDump];
})();
// Timestamp 2 (light global memory dump, so it should be skipped for
// mmaps_* values).
var gmd2 = addGlobalMemoryDump(model, {ts: 20, levelOfDetail: LIGHT});
var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, {ts: 18});
pmdBrowser2.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0x999, 999, 999, '/dev/ashmem/dalvik-main space',
{proportionalResident: 999})
]);
var pmdRendererB2 = addProcessMemoryDump(gmd2, pRendererB, {ts: 21});
var pmdRendererC2 = addProcessMemoryDump(gmd2, pRendererC, {ts: 22});
var pmdGpu2 = addProcessMemoryDump(gmd2, pGpu, {ts: 20});
pmdGpu2.memoryAllocatorDumps = (function() {
var gpuDump = newAllocatorDump(pmdGpu2, 'gpu');
var memtrackDump = addChildDump(gpuDump, 'android_memtrack');
addChildDump(memtrackDump, 'gl', {numerics: {memtrack_pss: 12345}});
return [gpuDump];
})();
// Timestamp 3.
var gmd3 = addGlobalMemoryDump(model, {ts: 30, levelOfDetail: DETAILED});
var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, {ts: 30});
pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 1024, 0, '/dev/ashmem/dalvik-non moving space',
{proportionalResident: 3, privateDirtyResident: 80})
]);
var pmdRendererA3 = addProcessMemoryDump(gmd3, pRendererA, {ts: 29});
// Intentionally pmdRendererA3.vmRegions undefined.
var pmdRendererC3 = addProcessMemoryDump(gmd3, pRendererC, {ts: 31});
pmdRendererC3.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0x2345, 2048, 0, '/no/matching/category',
{proportionalResident: 200}),
new VMRegion(0x2345, 2048, 0, '/dev/ashmem', {proportionalResident: 500}),
]);
var pmdGpu3 = addProcessMemoryDump(gmd3, pGpu, {ts: 30});
pmdGpu3.memoryAllocatorDumps = (function() {
var gpuDump = newAllocatorDump(pmdGpu3, 'gpu',
{numerics: {memtrack_pss: 6000 /* ignored */}});
var memtrackDump = addChildDump(gpuDump, 'android_memtrack',
{numerics: {memtrack_pss: 5000 /* ignored */}});
addChildDump(memtrackDump, 'gl', {numerics: {memtrack_pss: 3000}});
addChildDump(memtrackDump, 'graphics', {numerics: {ignored: 2000}});
addChildDump(memtrackDump, 'gfx', {numerics: {memtrack_pss: 1000}});
return [gpuDump];
})();
pmdGpu3.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xCDCD, 4096, 0, '/dev/ashmem/dalvik-zygote space',
{proportionalResident: 150, privateDirtyResident: 90})
]);
// Timestamp 4.
var gmd4 = addGlobalMemoryDump(model, {ts: 40, levelOfDetail: DETAILED});
var pmdBrowser4 = addProcessMemoryDump(gmd4, pBrowser, {ts: 40});
}, undefined /* opt_options */, {
'memory:unknown_browser:all_processes:dump_count:detailed': {
value: [3],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by an ' +
'unknown browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:light': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by an unknown ' +
'browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by an ' +
'unknown browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count': {
value: [4],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by an unknown ' +
'browser to the trace'
},
'memory:unknown_browser:all_processes:process_count': {
value: [4, 4, 4, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:gpu_memory:proportional_resident_size':
{
value: [100 + 200, 3000 + 1000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of GPU memory ' +
'(Android memtrack) used by all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:gpu_memory:gfx:proportional_resident_size':
{
value: [0, 1000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the gfx Android ' +
'memtrack component in all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:gpu_memory:gl:proportional_resident_size':
{
value: [100, 3000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the gl Android ' +
'memtrack component in all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:gpu_memory:graphics:proportional_resident_size':
{
value: [200, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the graphics ' +
'Android memtrack component in all processes in an unknown ' +
'browser'
},
'memory:unknown_browser:all_processes:reported_by_os:private_dirty_size': {
value: [17 + 34 + 8, 80 + 90, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for all ' +
'processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:proportional_resident_size':
{
value: [67 + 100 + 200, 700 + 3 + 1000 + 150 + 3000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by ' +
'the OS for all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:system_memory:private_dirty_size':
{
value: [17 + 34 + 8, 80 + 90, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:system_memory:proportional_resident_size':
{
value: [67, 700 + 3 + 150, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in all processes in an ' +
'unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 500, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in all ' +
'processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [8, 80 + 90, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in all processes ' +
'in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 3 + 150, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [17 + 34, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in all ' +
'processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [67, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in all processes in an unknown browser'
},
'memory:unknown_browser:browser_process:process_count': {
value: [1, 1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:private_dirty_size':
{
value: [8, 80, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for the ' +
'browser process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:proportional_resident_size':
{
value: [0, 3, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by ' +
'the OS for the browser process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:system_memory:private_dirty_size':
{
value: [8, 80, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by the browser process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 3, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by the browser process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in the browser process ' +
'in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in the ' +
'browser process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [8, 80, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in the browser ' +
'process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 3, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'the browser process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in the browser ' +
'process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in the browser process in an unknown browser'
},
'memory:unknown_browser:gpu_process:process_count': {
value: [1, 1, 1, 0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of GPU processes in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:proportional_resident_size':
{
value: [100 + 200, 3000 + 1000 + 150, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by ' +
'the OS for the GPU process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:private_dirty_size': {
value: [0, 90, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for the GPU ' +
'process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:gpu_memory:proportional_resident_size':
{
value: [100 + 200, 3000 + 1000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of GPU memory ' +
'(Android memtrack) used by the GPU process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:gpu_memory:gfx:proportional_resident_size':
{
value: [0, 1000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the gfx Android ' +
'memtrack component in the GPU process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:gpu_memory:gl:proportional_resident_size':
{
value: [100, 3000, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the gl Android ' +
'memtrack component in the GPU process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:gpu_memory:graphics:proportional_resident_size':
{
value: [200, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the graphics ' +
'Android memtrack component in the GPU process in an unknown ' +
'browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:system_memory:private_dirty_size':
{
value: [0, 90, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by the GPU process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 150, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by the GPU process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in the GPU process in ' +
'an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in the ' +
'GPU process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [0, 90, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in the GPU ' +
'process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 150, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'the GPU process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in the GPU ' +
'process in an unknown browser'
},
'memory:unknown_browser:gpu_process:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in the GPU process in an unknown browser'
},
'memory:unknown_browser:renderer_processes:process_count': {
value: [2, 2, 2, 0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of renderer processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:private_dirty_size':
{
value: [17 + 34, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for ' +
'renderer processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:proportional_resident_size':
{
value: [67, 700, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by ' +
'the OS for renderer processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:system_memory:private_dirty_size':
{
value: [17 + 34, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by renderer processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:system_memory:proportional_resident_size':
{
value: [67, 700, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by renderer processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in renderer processes ' +
'in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 500, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in ' +
'renderer processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in renderer ' +
'processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'renderer processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [17 + 34, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in renderer ' +
'processes in an unknown browser'
},
'memory:unknown_browser:renderer_processes:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [67, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in renderer processes in an unknown browser'
}
});
memoryMetricTest('combined_chrome', function(model) {
var pBrowser = createChromeBrowserProcess(model);
// Timestamp 1.
var gmd1 = addGlobalMemoryDump(model, {ts: 10, levelOfDetail: DETAILED});
var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, {ts: 10});
pmdBrowser1.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 128, 0, '/dev/ashmem/dalvik-non moving space',
{privateDirtyResident: 100})
]);
// Timestamp 2 (light global memory dump, so it should be skipped for
// mmaps_* values).
var gmd2 = addGlobalMemoryDump(model, {ts: 20, levelOfDetail: LIGHT});
var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, {ts: 20});
pmdBrowser2.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser2, 'malloc', {numerics: {size: 32}})
];
// Timestamp 3.
var gmd3 = addGlobalMemoryDump(model, {ts: 30, levelOfDetail: DETAILED});
var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, {ts: 30});
pmdBrowser3.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser3, 'malloc', {numerics: {size: 48}})
];
pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 1024, 0, '/dev/ashmem/dalvik-non moving space',
{privateDirtyResident: 150})
]);
}, {} /* opt_options */, {
'memory:chrome:all_processes:dump_count:detailed': {
value: [2],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:light': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by Chrome ' +
'to the trace'
},
'memory:chrome:all_processes:dump_count': {
value: [3],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by Chrome to the ' +
'trace'
},
'memory:chrome:all_processes:process_count': {
value: [1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:effective_size': {
value: [0, 32, 48],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:malloc:effective_size': {
value: [0, 32, 48],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:private_dirty_size': {
value: [100, 150],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:proportional_resident_size': {
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by the ' +
'OS for all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [100, 150],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in all processes ' +
'in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:private_dirty_size':
{
value: [100, 150],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by all processes in Chrome'
},
'memory:chrome:browser_process:process_count': {
value: [1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:effective_size': {
value: [0, 32, 48],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for the browser ' +
'process in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:malloc:effective_size': {
value: [0, 32, 48],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:private_dirty_size': {
value: [100, 150],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for the ' +
'browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:proportional_resident_size': {
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by the ' +
'OS for the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in the browser process ' +
'in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in the ' +
'browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [100, 150],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in the browser ' +
'process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in the browser ' +
'process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:private_dirty_size':
{
value: [100, 150],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by the browser process in Chrome'
}
});
memoryMetricTest('combined_multipleBrowsers', function(model) {
var pWebView = createWebViewProcess(model);
var pChrome1 = createChromeBrowserProcess(model);
var pRenderer1 = createProcessWithName(model, 'Renderer');
var pGpu1 = createProcessWithName(model, 'GPU Process');
var pUnknownBrowser = createProcessWithName(model, 'Browser');
var pChrome2 = createChromeBrowserProcess(model);
var pRenderer2 = createProcessWithName(model, 'Renderer');
// Timestamp 1 (WebView).
var gmd1 = addGlobalMemoryDump(model, {ts: 0, levelOfDetail: LIGHT});
var pmdBrowser1 = addProcessMemoryDump(gmd1, pWebView, {ts: 0});
pmdBrowser1.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser1, 'malloc', {numerics: {size: 2}}),
newAllocatorDump(pmdBrowser1, 'v8', {numerics: {size: 4}})
];
// Timestamp 2 (Chrome 1 + Renderer + GPU Process).
var gmd2 = addGlobalMemoryDump(model, {ts: 10, levelOfDetail: DETAILED});
var pmdBrowser2 = addProcessMemoryDump(gmd2, pChrome1, {ts: 12});
pmdBrowser2.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 9999, 0, '/dev/ashmem/dalvik-non moving space',
{privateDirtyResident: 8})
]);
var pmdGpu2 = addProcessMemoryDump(gmd2, pGpu1, {ts: 8});
pmdGpu2.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 9999, 0, '/dev/ashmem/dalvik-non moving space',
{privateDirtyResident: 16})
]);
var pmdRenderer2 = addProcessMemoryDump(gmd2, pRenderer1, {ts: 8});
pmdRenderer2.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser2, 'malloc', {numerics: {size: 32}})
];
// Timestamp 3 (Chrome 2).
var gmd3 = addGlobalMemoryDump(model, {ts: 20, levelOfDetail: DETAILED});
var pmdBrowser3 = addProcessMemoryDump(gmd3, pChrome2, {ts: 20});
pmdBrowser3.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser3, 'malloc', {numerics: {size: 64}}),
newAllocatorDump(pmdBrowser3, 'sqlite', {numerics: {size: 128}}),
newAllocatorDump(pmdBrowser3, 'discardable', {numerics: {
size: 8388608,
locked_size: 4194304
}})
];
pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 99, 0, '/dev/ashmem/dalvik-non moving space',
{privateDirtyResident: 256})
]);
// Timestamp 4 (Chrome 2 + Renderer).
var gmd4 = addGlobalMemoryDump(model, {ts: 30, levelOfDetail: LIGHT});
var pmdBrowser4 = addProcessMemoryDump(gmd4, pChrome2, {ts: 28});
pmdBrowser4.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser4, 'malloc', {numerics: {size: 512}}),
newAllocatorDump(pmdBrowser3, 'discardable', {numerics: {size: 16777216}})
];
var pmdRenderer4 = addProcessMemoryDump(gmd4, pRenderer2, {ts: 32});
pmdRenderer4.memoryAllocatorDumps = [
newAllocatorDump(pmdRenderer4, 'malloc', {numerics: {size: 1024}}),
newAllocatorDump(pmdRenderer4, 'v8', {numerics: {size: 2048}})
];
// Timestamp 5 (Unknown browser).
var gmd5 = addGlobalMemoryDump(model, {ts: 40, levelOfDetail: LIGHT});
var pmdBrowser5 = addProcessMemoryDump(gmd5, pUnknownBrowser, {ts: 40});
pmdBrowser5.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser5, 'malloc', {numerics: {size: 4096}}),
newAllocatorDump(pmdBrowser5, 'sqlite', {numerics: {size: 8192}}),
];
// Timestamp 6 (WebView).
var gmd6 = addGlobalMemoryDump(model, {ts: 50, levelOfDetail: DETAILED});
var pmdBrowser6 = addProcessMemoryDump(gmd6, pWebView, {ts: 50});
pmdBrowser6.memoryAllocatorDumps = (function() {
var mallocDump = newAllocatorDump(pmdBrowser6, 'malloc',
{numerics: {size: 16384}});
var v8Dump = newAllocatorDump(pmdBrowser6, 'v8', {numerics: {
allocated_objects_size: 32768,
code_and_metadata_size: 33554432,
size: 67108864
}});
var isolateDump = addChildDump(v8Dump, 'isolate');
addChildDump(isolateDump, 'malloc', {numerics: {
size: 1,
peak_size: 2
}});
return [mallocDump, v8Dump];
})();
pmdBrowser6.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 99999, 0, '/dev/ashmem/dalvik-non moving space',
{privateDirtyResident: 65536})
]);
// Timestamp 7 (Chrome 1 + GPU Process).
var gmd7 = addGlobalMemoryDump(model, {ts: 60, levelOfDetail: DETAILED});
var pmdBrowser7 = addProcessMemoryDump(gmd7, pChrome1, {ts: 63});
pmdBrowser7.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser4, 'malloc', {numerics: {size: 131072}}),
newAllocatorDump(pmdBrowser4, 'sqlite', {numerics: {size: 262144}})
];
pmdBrowser7.vmRegions = VMRegionClassificationNode.fromRegions([
new VMRegion(0xABCD, 999999, 0, '/dev/ashmem/dalvik-non moving space',
{privateDirtyResident: 524288})
]);
var pmdGpu7 = addProcessMemoryDump(gmd7, pGpu1, {ts: 57});
pmdGpu7.memoryAllocatorDumps = (function() {
var gpuDump = newAllocatorDump(pmdGpu7, 'gpu',
{numerics: {size: 1048576}});
var memtrackDump = addChildDump(gpuDump, 'android_memtrack');
addChildDump(memtrackDump, 'gl', {numerics: {memtrack_pss: 2097152}});
return [gpuDump];
})();
// Timestamp 8 (Chrome 1).
var gmd8 = addGlobalMemoryDump(model, {ts: 76, levelOfDetail: BACKGROUND});
var pmdBrowser8 = addProcessMemoryDump(gmd8, pChrome1, {ts: 80});
pmdBrowser8.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser5, 'malloc', {numerics: {size: 1024}}),
newAllocatorDump(pmdBrowser5, 'sqlite', {numerics: {size: 2048}}),
];
// Timestamp 9 (WebView).
var gmd9 = addGlobalMemoryDump(model, {ts: 90, levelOfDetail: BACKGROUND});
var pmdBrowser9 = addProcessMemoryDump(gmd9, pWebView, {ts: 90});
pmdBrowser9.memoryAllocatorDumps = [
newAllocatorDump(pmdBrowser5, 'v8', {numerics: {size: 4096}}),
newAllocatorDump(pmdBrowser5, 'sqlite', {numerics: {size: 2048}}),
];
}, undefined /* opt_options */, {
// WebView (GMD1, GMD6).
'memory:webview:all_processes:dump_count:detailed': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by WebView ' +
'to the trace'
},
'memory:webview:all_processes:dump_count:light': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by WebView to ' +
'the trace'
},
'memory:webview:all_processes:dump_count:background': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by WebView ' +
'to the trace'
},
'memory:webview:all_processes:dump_count': {
value: [3],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by WebView to the ' +
'trace'
},
'memory:webview:all_processes:process_count': {
value: [1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:effective_size': {
value: [4 + 2, 16384 + 67108864, 4096 + 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for all ' +
'processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:code_and_metadata_size': {
value: [0, 33554432, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of code and metadata reported by Chrome for ' +
'all processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:allocated_objects_size': {
value: [0, 32768, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of all allocated objects reported by Chrome ' +
'for all processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:peak_size':
{
value: [0, 2, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total peak size reported by Chrome for all ' +
'processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:malloc:effective_size': {
value: [2, 16384, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in all processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:sqlite:effective_size': {
value: [0, 2048, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of sqlite in all processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:v8:allocated_by_malloc:effective_size':
{
value: [0, 1, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of objects allocated by malloc for v8 ' +
'in all processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:v8:allocated_by_malloc:peak_size':
{
value: [0, 2, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'peak size of objects allocated by malloc for v8 ' +
'in all processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:v8:effective_size': {
value: [4, 67108864, 4096],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8 in all processes in WebView'
},
'memory:webview:all_processes:reported_by_chrome:v8:code_and_metadata_size':
{
value: [0, 33554432, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of v8 code and metadata in all processes in ' +
'WebView'
},
'memory:webview:all_processes:reported_by_chrome:v8:allocated_objects_size':
{
value: [0, 32768, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8 in all processes ' +
'in WebView'
},
'memory:webview:all_processes:reported_by_chrome:v8:peak_size':
{
value: [0, 2, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'peak size of v8 in all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:private_dirty_size': {
value: [65536],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for all ' +
'processes in WebView'
},
'memory:webview:all_processes:reported_by_os:proportional_resident_size': {
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by the ' +
'OS for all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in all processes in ' +
'WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in all ' +
'processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [65536],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in all processes ' +
'in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in all ' +
'processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:private_dirty_size':
{
value: [65536],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by all processes in WebView'
},
'memory:webview:browser_process:process_count': {
value: [1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in WebView'
},
'memory:webview:browser_process:reported_by_chrome:effective_size': {
value: [4 + 2, 16384 + 67108864, 4096 + 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for the browser ' +
'process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:allocated_objects_size':
{
value: [0, 32768, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of all allocated objects reported by ' +
'Chrome for the browser process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:code_and_metadata_size':
{
value: [0, 33554432, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total size of code and metadata reported by Chrome ' +
'for the browser process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:peak_size':
{
value: [0, 2, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total peak size reported by Chrome ' +
'for the browser process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:malloc:effective_size': {
value: [2, 16384, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in the browser process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:v8:allocated_by_malloc:effective_size':
{
value: [0, 1, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of objects allocated by malloc for v8 ' +
'in the browser process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:v8:allocated_by_malloc:peak_size':
{
value: [0, 2, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'peak size of objects allocated by malloc for v8 ' +
'in the browser process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:sqlite:effective_size': {
value: [0, 0, 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of sqlite in the browser process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:v8:effective_size': {
value: [4, 67108864, 4096],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8 in the browser process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:v8:allocated_objects_size':
{
value: [0, 32768, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of all objects allocated by v8 in the browser ' +
'process in WebView'
},
'memory:webview:browser_process:reported_by_chrome:v8:code_and_metadata_size':
{
value: [0, 33554432, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'size of v8 code and metadata in the browser process ' +
'in WebView'
},
'memory:webview:browser_process:reported_by_chrome:v8:peak_size':
{
value: [0, 2, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'peak size of v8 in the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:private_dirty_size': {
value: [65536],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for the ' +
'browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by ' +
'the OS for the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in the browser process ' +
'in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in the ' +
'browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [65536],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in the browser ' +
'process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in the browser ' +
'process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:private_dirty_size':
{
value: [65536],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by the browser process in WebView'
},
// Chrome 1 (GMD3, GMD4).
'memory:chrome:all_processes:reported_by_os:gpu_memory:gl:proportional_resident_size':
{
value: [0, 2097152],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the gl Android ' +
'memtrack component in all processes in Chrome'
},
'memory:chrome:all_processes:dump_count:detailed': {
value: [2],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:light': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:background': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by Chrome ' +
'to the trace'
},
'memory:chrome:all_processes:dump_count': {
value: [3],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by Chrome to the ' +
'trace'
},
'memory:chrome:all_processes:process_count': {
value: [3, 2, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:effective_size': {
value: [32, 1048576 + 131072 + 262144, 1024 + 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:gpu:effective_size': {
value: [0, 1048576, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of gpu in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:malloc:effective_size': {
value: [32, 131072, 1024],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_chrome:sqlite:effective_size': {
value: [0, 262144, 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of sqlite in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:private_dirty_size': {
value: [8 + 16, 524288],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:proportional_resident_size': {
value: [0, 2097152],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by the ' +
'OS for all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:gpu_memory:proportional_resident_size':
{
value: [0, 2097152],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of GPU memory ' +
'(Android memtrack) used by all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [8 + 16, 524288],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in all processes ' +
'in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in all ' +
'processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:private_dirty_size':
{
value: [8 + 16, 524288],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by all processes in Chrome'
},
'memory:chrome:all_processes:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by all processes in Chrome'
},
'memory:chrome:browser_process:process_count': {
value: [1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:effective_size': {
value: [0, 131072 + 262144, 1024 + 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for the browser ' +
'process in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:malloc:effective_size': {
value: [0, 131072, 1024],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_chrome:sqlite:effective_size': {
value: [0, 262144, 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of sqlite in the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:private_dirty_size': {
value: [8, 524288],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for the ' +
'browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:proportional_resident_size': {
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by the ' +
'OS for the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in the browser process ' +
'in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in the ' +
'browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [8, 524288],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in the browser ' +
'process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in the browser ' +
'process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:private_dirty_size':
{
value: [8, 524288],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by the browser process in Chrome'
},
'memory:chrome:browser_process:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by the browser process in Chrome'
},
'memory:chrome:gpu_process:reported_by_chrome:effective_size': {
value: [0, 1048576, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for the GPU ' +
'process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:gpu_memory:proportional_resident_size':
{
value: [0, 2097152],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of GPU memory ' +
'(Android memtrack) used by the GPU process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:gpu_memory:gl:proportional_resident_size':
{
value: [0, 2097152],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the gl Android ' +
'memtrack component in the GPU process in Chrome'
},
'memory:chrome:gpu_process:process_count': {
value: [1, 1, 0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of GPU processes in Chrome'
},
'memory:chrome:gpu_process:reported_by_chrome:gpu:effective_size': {
value: [0, 1048576, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of gpu in the GPU process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:private_dirty_size': {
value: [16, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for the GPU ' +
'process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:proportional_resident_size': {
value: [0, 2097152],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by the ' +
'OS for the GPU process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in the GPU process in ' +
'Chrome'
},
'memory:chrome:gpu_process:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in the ' +
'GPU process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [16, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in the GPU ' +
'process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'the GPU process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in the GPU ' +
'process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in the GPU process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:system_memory:private_dirty_size':
{
value: [16, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by the GPU process in Chrome'
},
'memory:chrome:gpu_process:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by the GPU process in Chrome'
},
'memory:chrome:renderer_processes:process_count': {
value: [1, 0, 0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:effective_size': {
value: [32, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_chrome:malloc:effective_size':
{
value: [32, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in renderer processes in ' +
'Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:private_dirty_size': {
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by ' +
'the OS for renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in renderer processes ' +
'in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in ' +
'renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in renderer ' +
'processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:system_memory:private_dirty_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by renderer processes in Chrome'
},
'memory:chrome:renderer_processes:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by renderer processes in Chrome'
},
// Chrome 2 (GMD2, GMD7).
'memory:chrome2:all_processes:dump_count:detailed': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by Chrome(2) ' +
'to the trace'
},
'memory:chrome2:all_processes:dump_count:light': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by Chrome(2) to ' +
'the trace'
},
'memory:chrome2:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by ' +
'Chrome(2) to the trace'
},
'memory:chrome2:all_processes:dump_count': {
value: [2],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by Chrome(2) to ' +
'the trace'
},
'memory:chrome2:all_processes:process_count': {
value: [1, 2],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_chrome:discardable:effective_size':
{
value: [8388608, 16777216],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of discardable in all processes in ' +
'Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_chrome:locked_size': {
value: [4194304, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total locked (pinned) size reported by Chrome for all ' +
'processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_chrome:discardable:locked_size': {
value: [4194304, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'locked (pinned) size of discardable in all processes in ' +
'Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_chrome:effective_size': {
value: [64 + 8388608 + 128, 512 + 1024 + 2048 + 16777216],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for all ' +
'processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_chrome:malloc:effective_size': {
value: [64, 512 + 1024],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in all processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_chrome:sqlite:effective_size': {
value: [128, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of sqlite in all processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_chrome:v8:effective_size': {
value: [0, 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8 in all processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:private_dirty_size': {
value: [256],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for all ' +
'processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:proportional_resident_size': {
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by the ' +
'OS for all processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in all processes in ' +
'Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in all ' +
'processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [256],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in all processes ' +
'in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'all processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in all ' +
'processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in all processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:system_memory:private_dirty_size':
{
value: [256],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by all processes in Chrome(2)'
},
'memory:chrome2:all_processes:reported_by_os:system_memory:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by all processes in Chrome(2)'
},
'memory:chrome2:browser_process:process_count': {
value: [1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_chrome:effective_size': {
value: [64 + 8388608 + 128, 512 + 16777216],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for the browser ' +
'process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_chrome:locked_size': {
value: [4194304, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total locked (pinned) size reported by Chrome for the ' +
'browser process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_chrome:malloc:effective_size': {
value: [64, 512],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in the browser process in ' +
'Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_chrome:discardable:effective_size':
{
value: [8388608, 16777216],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of discardable in the browser process ' +
'in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_chrome:discardable:locked_size':
{
value: [4194304, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'locked (pinned) size of discardable in the browser ' +
'process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_chrome:sqlite:effective_size': {
value: [128, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of sqlite in the browser process in ' +
'Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:private_dirty_size': {
value: [256],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for the ' +
'browser process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by ' +
'the OS for the browser process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in the browser process ' +
'in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in the ' +
'browser process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [256],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in the browser ' +
'process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'the browser process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in the browser ' +
'process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in the browser process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:system_memory:private_dirty_size':
{
value: [256],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by the browser process in Chrome(2)'
},
'memory:chrome2:browser_process:reported_by_os:system_memory:proportional_resident_size':
{
value: [0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by the browser process in Chrome(2)'
},
'memory:chrome2:renderer_processes:process_count': {
value: [0, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of renderer processes in Chrome(2)'
},
'memory:chrome2:renderer_processes:reported_by_chrome:effective_size': {
value: [0, 1024 + 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for renderer ' +
'processes in Chrome(2)'
},
'memory:chrome2:renderer_processes:reported_by_chrome:malloc:effective_size':
{
value: [0, 1024],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in renderer processes in ' +
'Chrome(2)'
},
'memory:chrome2:renderer_processes:reported_by_chrome:v8:effective_size': {
value: [0, 2048],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of v8 in renderer processes in Chrome(2)'
},
// Unknown browser (GMD5).
'memory:unknown_browser:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by an ' +
'unknown browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:light': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by an unknown ' +
'browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by an ' +
'unknown browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by an unknown ' +
'browser to the trace'
},
'memory:unknown_browser:all_processes:process_count': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_chrome:effective_size': {
value: [4096 + 8192],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for all ' +
'processes in an unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_chrome:malloc:effective_size':
{
value: [4096],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in all processes in an ' +
'unknown browser'
},
'memory:unknown_browser:all_processes:reported_by_chrome:sqlite:effective_size':
{
value: [8192],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of sqlite in all processes in an ' +
'unknown browser'
},
'memory:unknown_browser:browser_process:process_count': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_chrome:effective_size':
{
value: [4096 + 8192],
unit: sizeInBytes_smallerIsBetter,
description: 'total effective size reported by Chrome for the ' +
'browser process in an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_chrome:malloc:effective_size':
{
value: [4096],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of malloc in the browser process in ' +
'an unknown browser'
},
'memory:unknown_browser:browser_process:reported_by_chrome:sqlite:effective_size':
{
value: [8192],
unit: sizeInBytes_smallerIsBetter,
description: 'effective size of sqlite in the browser process in ' +
'an unknown browser'
}
});
memoryMetricTest('rangeOfInterest', function(model) {
var pChrome = createChromeBrowserProcess(model);
var pWebView = createWebViewProcess(model);
// Chrome: only the LIGHT dumps should be kept.
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 5, duration: 4, levelOfDetail: DETAILED}), pChrome);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 10, duration: 2, levelOfDetail: LIGHT}), pChrome);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 13, duration: 3, levelOfDetail: LIGHT}), pChrome);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 20, duration: 1, levelOfDetail: BACKGROUND}), pChrome);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 22, duration: 5, levelOfDetail: DETAILED}), pChrome);
// WebView: only the DETAILED dumps should be kept.
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 4, duration: 1, levelOfDetail: LIGHT}), pWebView);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 5, duration: 5, levelOfDetail: DETAILED}), pWebView);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 10, duration: 0, levelOfDetail: DETAILED}), pWebView);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 11, duration: 7, levelOfDetail: BACKGROUND}), pWebView);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 19, duration: 2, levelOfDetail: DETAILED}), pWebView);
addProcessMemoryDump(addGlobalMemoryDump(
model, {ts: 21, duration: 5, levelOfDetail: LIGHT}), pWebView);
// Unknown browser: only the LIGHT dump should be kept.
addGlobalMemoryDump(model, {ts: 5, duration: 3, levelOfDetail: DETAILED});
addGlobalMemoryDump(model, {ts: 9, duration: 12, levelOfDetail: LIGHT});
addGlobalMemoryDump(model, {ts: 22, duration: 3, levelOfDetail: DETAILED});
}, { /* opt_options */
rangeOfInterest: tr.b.Range.fromExplicitRange(10, 20)
}, {
'memory:chrome:all_processes:dump_count': {
value: [3],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by Chrome to the ' +
'trace'
},
'memory:chrome:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:light': {
value: [2],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by Chrome to ' +
'the trace'
},
'memory:chrome:all_processes:dump_count:background': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by Chrome ' +
'to the trace'
},
'memory:chrome:all_processes:process_count': {
value: [1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in Chrome'
},
'memory:chrome:browser_process:process_count': {
value: [1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in Chrome'
},
'memory:webview:all_processes:dump_count': {
value: [4],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by WebView to the ' +
'trace'
},
'memory:webview:all_processes:dump_count:detailed': {
value: [3],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by WebView ' +
'to the trace'
},
'memory:webview:all_processes:dump_count:light': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by WebView to ' +
'the trace'
},
'memory:webview:all_processes:dump_count:background': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by WebView ' +
'to the trace'
},
'memory:webview:all_processes:process_count': {
value: [1, 1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:private_dirty_size': {
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for all ' +
'processes in WebView'
},
'memory:webview:all_processes:reported_by_os:proportional_resident_size': {
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by the ' +
'OS for all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in all processes in ' +
'WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in all ' +
'processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in all processes ' +
'in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in all ' +
'processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by all processes in WebView'
},
'memory:webview:all_processes:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by all processes in WebView'
},
'memory:webview:browser_process:process_count': {
value: [1, 1, 1, 1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of browser processes in WebView'
},
'memory:webview:browser_process:reported_by_os:private_dirty_size': {
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size reported by the OS for the ' +
'browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) reported by ' +
'the OS for the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:ashmem:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of ashmem in the browser process ' +
'in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:ashmem:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of ashmem in the ' +
'browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:java_heap:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the Java heap in the browser ' +
'process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:java_heap:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the Java heap in ' +
'the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:native_heap:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'private dirty size of the native heap in the browser ' +
'process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:native_heap:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'proportional resident size (PSS) of the native heap ' +
'in the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:private_dirty_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total private dirty size of system memory (RAM) used ' +
'by the browser process in WebView'
},
'memory:webview:browser_process:reported_by_os:system_memory:proportional_resident_size':
{
value: [0, 0, 0],
unit: sizeInBytes_smallerIsBetter,
description: 'total proportional resident size (PSS) of system ' +
'memory (RAM) used by the browser process in WebView'
},
'memory:unknown_browser:all_processes:dump_count': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of all memory dumps added by an unknown ' +
'browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:detailed': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of detailed memory dumps added by an ' +
'unknown browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:light': {
value: [1],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of light memory dumps added by an unknown ' +
'browser to the trace'
},
'memory:unknown_browser:all_processes:dump_count:background': {
value: [0],
unit: unitlessNumber_smallerIsBetter,
description: 'total number of background memory dumps added by an ' +
'unknown browser to the trace'
}
});
test('dumpIdBrowserClashThrows', function() {
var model = tr.c.TestUtils.newModel(function(model) {
var pWebView = createWebViewProcess(model);
var pChrome = createChromeBrowserProcess(model);
var gmd = addGlobalMemoryDump(model, {ts: 10});
addProcessMemoryDump(gmd, pWebView, {ts: 9});
addProcessMemoryDump(gmd, pChrome, {ts: 11});
});
var values = new tr.v.ValueSet();
assert.throws(function() {
tr.metrics.sh.memoryMetric(values, model);
}, 'Memory dump ID clash across multiple browsers with PIDs: 1 and 2');
});
});
</script>