| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <!-- | 2 <!-- |
| 3 Copyright 2016 The Chromium Authors. All rights reserved. | 3 Copyright 2016 The Chromium Authors. All rights reserved. |
| 4 Use of this source code is governed by a BSD-style license that can be | 4 Use of this source code is governed by a BSD-style license that can be |
| 5 found in the LICENSE file. | 5 found in the LICENSE file. |
| 6 --> | 6 --> |
| 7 | 7 |
| 8 <link rel="import" href="/tracing/base/iteration_helpers.html"> |
| 9 <link rel="import" href="/tracing/base/range.html"> |
| 8 <link rel="import" href="/tracing/core/test_utils.html"> | 10 <link rel="import" href="/tracing/core/test_utils.html"> |
| 9 <link rel="import" href="/tracing/metrics/system_health/memory_metric.html"> | 11 <link rel="import" href="/tracing/metrics/system_health/memory_metric.html"> |
| 10 <link rel="import" href="/tracing/model/container_memory_dump.html"> | 12 <link rel="import" href="/tracing/model/container_memory_dump.html"> |
| 11 <link rel="import" href="/tracing/model/memory_dump_test_utils.html"> | 13 <link rel="import" href="/tracing/model/memory_dump_test_utils.html"> |
| 12 <link rel="import" href="/tracing/model/vm_region.html"> | 14 <link rel="import" href="/tracing/model/vm_region.html"> |
| 13 <link rel="import" href="/tracing/value/value.html"> | 15 <link rel="import" href="/tracing/value/value.html"> |
| 14 <link rel="import" href="/tracing/value/value_set.html"> | 16 <link rel="import" href="/tracing/value/value_set.html"> |
| 15 | 17 |
| 16 <script> | 18 <script> |
| 17 'use strict'; | 19 'use strict'; |
| 18 | 20 |
| 19 tr.b.unittest.testSuite(function() { | 21 tr.b.unittest.testSuite(function() { |
| 20 var VMRegion = tr.model.VMRegion; | 22 var VMRegion = tr.model.VMRegion; |
| 21 var VMRegionClassificationNode = tr.model.VMRegionClassificationNode; | 23 var VMRegionClassificationNode = tr.model.VMRegionClassificationNode; |
| 22 var LIGHT = tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT; | 24 var LIGHT = tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT; |
| 23 var DETAILED = tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED; | 25 var DETAILED = tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED; |
| 24 var SIZE_DELTA = tr.model.MemoryDumpTestUtils.SIZE_DELTA; | 26 var SIZE_DELTA = tr.model.MemoryDumpTestUtils.SIZE_DELTA; |
| 25 var addProcessMemoryDump = tr.model.MemoryDumpTestUtils.addProcessMemoryDump; | 27 var addProcessMemoryDump = tr.model.MemoryDumpTestUtils.addProcessMemoryDump; |
| 26 var addGlobalMemoryDump = tr.model.MemoryDumpTestUtils.addGlobalMemoryDump; | 28 var addGlobalMemoryDump = tr.model.MemoryDumpTestUtils.addGlobalMemoryDump; |
| 27 var newAllocatorDump = tr.model.MemoryDumpTestUtils.newAllocatorDump; | 29 var newAllocatorDump = tr.model.MemoryDumpTestUtils.newAllocatorDump; |
| 28 var addChildDump = tr.model.MemoryDumpTestUtils.addChildDump; | 30 var addChildDump = tr.model.MemoryDumpTestUtils.addChildDump; |
| 29 var addOwnershipLink = tr.model.MemoryDumpTestUtils.addOwnershipLink; | 31 var addOwnershipLink = tr.model.MemoryDumpTestUtils.addOwnershipLink; |
| 30 var unitlessNumber_smallerIsBetter = | 32 var unitlessNumber_smallerIsBetter = |
| 31 tr.v.Unit.byName.unitlessNumber_smallerIsBetter; | 33 tr.v.Unit.byName.unitlessNumber_smallerIsBetter; |
| 32 var sizeInBytes_smallerIsBetter = | 34 var sizeInBytes_smallerIsBetter = |
| 33 tr.v.Unit.byName.sizeInBytes_smallerIsBetter; | 35 tr.v.Unit.byName.sizeInBytes_smallerIsBetter; |
| 34 | 36 |
| 35 function memoryMetricTest(name, modelCallback, expectedNumerics) { | 37 function memoryMetricTest( |
| 38 name, modelCallback, opt_options, expectedNumerics) { |
| 36 test(name, function() { | 39 test(name, function() { |
| 37 // Create a model and a fake value list. | 40 // Create a model and a fake value list. |
| 38 var model = tr.c.TestUtils.newModel(modelCallback); | 41 var model = tr.c.TestUtils.newModel(modelCallback); |
| 39 var valueNameToValues = {}; | 42 var valueNameToValues = {}; |
| 40 var fakeValueList = { | 43 var fakeValueList = { |
| 41 addValue: function(value) { | 44 addValue: function(value) { |
| 42 var values = valueNameToValues[value.name]; | 45 var values = valueNameToValues[value.name]; |
| 43 if (values === undefined) | 46 if (values === undefined) |
| 44 valueNameToValues[value.name] = values = []; | 47 valueNameToValues[value.name] = values = []; |
| 45 values.push(value); | 48 values.push(value); |
| 46 } | 49 } |
| 47 }; | 50 }; |
| 48 | 51 |
| 49 // Run the memory metric on the model. | 52 // Run the memory metric on the model. |
| 50 tr.metrics.sh.memoryMetric(fakeValueList, model); | 53 tr.metrics.sh.memoryMetric(fakeValueList, model, opt_options); |
| 51 | 54 |
| 52 // Check that the names of the added values match expectations. | 55 // Check that the names of the added values match expectations. |
| 53 var actualValueNames = Object.keys(valueNameToValues).sort(); | 56 var actualValueNames = Object.keys(valueNameToValues).sort(); |
| 54 var expectedValueNames = Object.keys(expectedNumerics).sort(); | 57 var expectedValueNames = Object.keys(expectedNumerics).sort(); |
| 55 assert.deepEqual(actualValueNames, expectedValueNames, { | 58 assert.deepEqual(actualValueNames, expectedValueNames, { |
| 56 // Build the long error message lazily. | 59 // Build the long error message lazily. |
| 57 toString: function() { | 60 toString: function() { |
| 58 var errorMessageParts = []; | 61 var errorMessageParts = []; |
| 59 function addValueNamesToError(type, valueNames, otherValueNames) { | 62 function addValueNamesToError(type, valueNames, otherValueNames) { |
| 60 var otherValueNamesSet = new Set(otherValueNames); | 63 var otherValueNamesSet = new Set(otherValueNames); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 } | 154 } |
| 152 | 155 |
| 153 function createWebViewProcess(model) { | 156 function createWebViewProcess(model) { |
| 154 var process = createChromeBrowserProcess(model); | 157 var process = createChromeBrowserProcess(model); |
| 155 process.getOrCreateThread(2).name = 'Chrome_InProcRendererThread'; | 158 process.getOrCreateThread(2).name = 'Chrome_InProcRendererThread'; |
| 156 return process; | 159 return process; |
| 157 } | 160 } |
| 158 | 161 |
| 159 memoryMetricTest('noDumps_noBrowser', function(model) { | 162 memoryMetricTest('noDumps_noBrowser', function(model) { |
| 160 createProcessWithName(model, 'Non-browser'); | 163 createProcessWithName(model, 'Non-browser'); |
| 161 }, { | 164 }, undefined /* opt_options */, { |
| 162 /* no values */ | 165 /* no values */ |
| 163 }); | 166 }); |
| 164 | 167 |
| 165 memoryMetricTest('noDumps_chrome', function(model) { | 168 memoryMetricTest('noDumps_chrome', function(model) { |
| 166 createChromeBrowserProcess(model); | 169 createChromeBrowserProcess(model); |
| 167 }, { | 170 }, undefined /* opt_options */, { |
| 168 'memory:chrome:all_processes:dump_count:detailed': { | 171 'memory:chrome:all_processes:dump_count:detailed': { |
| 169 value: 0, | 172 value: 0, |
| 170 unit: unitlessNumber_smallerIsBetter, | 173 unit: unitlessNumber_smallerIsBetter, |
| 171 description: 'total number of detailed memory dumps added by Chrome to ' + | 174 description: 'total number of detailed memory dumps added by Chrome to ' + |
| 172 'the trace' | 175 'the trace' |
| 173 }, | 176 }, |
| 174 'memory:chrome:all_processes:dump_count:light': { | 177 'memory:chrome:all_processes:dump_count:light': { |
| 175 value: 0, | 178 value: 0, |
| 176 unit: unitlessNumber_smallerIsBetter, | 179 unit: unitlessNumber_smallerIsBetter, |
| 177 description: 'total number of light memory dumps added by Chrome to ' + | 180 description: 'total number of light memory dumps added by Chrome to ' + |
| 178 'the trace' | 181 'the trace' |
| 179 }, | 182 }, |
| 180 'memory:chrome:all_processes:dump_count': { | 183 'memory:chrome:all_processes:dump_count': { |
| 181 value: 0, | 184 value: 0, |
| 182 unit: unitlessNumber_smallerIsBetter, | 185 unit: unitlessNumber_smallerIsBetter, |
| 183 description: 'total number of all memory dumps added by Chrome to the ' + | 186 description: 'total number of all memory dumps added by Chrome to the ' + |
| 184 'trace' | 187 'trace' |
| 185 } | 188 } |
| 186 }); | 189 }); |
| 187 | 190 |
| 188 memoryMetricTest('noDumps_multipleBrowsers', function(model) { | 191 memoryMetricTest('noDumps_multipleBrowsers', function(model) { |
| 189 createChromeBrowserProcess(model); | 192 createChromeBrowserProcess(model); |
| 190 createWebViewProcess(model); | 193 createWebViewProcess(model); |
| 191 createProcessWithName(model, 'Non-browser'); | 194 createProcessWithName(model, 'Non-browser'); |
| 192 createChromeBrowserProcess(model); | 195 createChromeBrowserProcess(model); |
| 193 }, { | 196 }, undefined /* opt_options */, { |
| 194 'memory:chrome2:all_processes:dump_count:detailed': { | 197 'memory:chrome2:all_processes:dump_count:detailed': { |
| 195 value: 0, | 198 value: 0, |
| 196 unit: unitlessNumber_smallerIsBetter, | 199 unit: unitlessNumber_smallerIsBetter, |
| 197 description: 'total number of detailed memory dumps added by Chrome(2) ' + | 200 description: 'total number of detailed memory dumps added by Chrome(2) ' + |
| 198 'to the trace' | 201 'to the trace' |
| 199 }, | 202 }, |
| 200 'memory:chrome2:all_processes:dump_count:light': { | 203 'memory:chrome2:all_processes:dump_count:light': { |
| 201 value: 0, | 204 value: 0, |
| 202 unit: unitlessNumber_smallerIsBetter, | 205 unit: unitlessNumber_smallerIsBetter, |
| 203 description: 'total number of light memory dumps added by Chrome(2) to ' + | 206 description: 'total number of light memory dumps added by Chrome(2) to ' + |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 }, | 244 }, |
| 242 'memory:webview:all_processes:dump_count': { | 245 'memory:webview:all_processes:dump_count': { |
| 243 value: 0, | 246 value: 0, |
| 244 unit: unitlessNumber_smallerIsBetter, | 247 unit: unitlessNumber_smallerIsBetter, |
| 245 description: 'total number of all memory dumps added by WebView to the ' + | 248 description: 'total number of all memory dumps added by WebView to the ' + |
| 246 'trace' | 249 'trace' |
| 247 } | 250 } |
| 248 }); | 251 }); |
| 249 | 252 |
| 250 memoryMetricTest('dumpCountsOnly_unknownBrowser', function(model) { | 253 memoryMetricTest('dumpCountsOnly_unknownBrowser', function(model) { |
| 251 addGlobalMemoryDump(model, 45, DETAILED); | 254 addGlobalMemoryDump(model, {ts: 45, levelOfDetail: DETAILED}); |
| 252 addGlobalMemoryDump(model, 68, LIGHT); | 255 addGlobalMemoryDump(model, {ts: 68, levelOfDetail: LIGHT}); |
| 253 addGlobalMemoryDump(model, 89, DETAILED); | 256 addGlobalMemoryDump(model, {ts: 89, levelOfDetail: DETAILED}); |
| 254 }, { | 257 }, undefined /* opt_options */, { |
| 255 'memory:unknown_browser:all_processes:dump_count:detailed': { | 258 'memory:unknown_browser:all_processes:dump_count:detailed': { |
| 256 value: 2, | 259 value: 2, |
| 257 unit: unitlessNumber_smallerIsBetter, | 260 unit: unitlessNumber_smallerIsBetter, |
| 258 description: 'total number of detailed memory dumps added by an ' + | 261 description: 'total number of detailed memory dumps added by an ' + |
| 259 'unknown browser to the trace' | 262 'unknown browser to the trace' |
| 260 }, | 263 }, |
| 261 'memory:unknown_browser:all_processes:dump_count:light': { | 264 'memory:unknown_browser:all_processes:dump_count:light': { |
| 262 value: 1, | 265 value: 1, |
| 263 unit: unitlessNumber_smallerIsBetter, | 266 unit: unitlessNumber_smallerIsBetter, |
| 264 description: 'total number of light memory dumps added by an unknown ' + | 267 description: 'total number of light memory dumps added by an unknown ' + |
| 265 'browser to the trace' | 268 'browser to the trace' |
| 266 }, | 269 }, |
| 267 'memory:unknown_browser:all_processes:dump_count': { | 270 'memory:unknown_browser:all_processes:dump_count': { |
| 268 value: 3, | 271 value: 3, |
| 269 unit: unitlessNumber_smallerIsBetter, | 272 unit: unitlessNumber_smallerIsBetter, |
| 270 description: 'total number of all memory dumps added by an unknown ' + | 273 description: 'total number of all memory dumps added by an unknown ' + |
| 271 'browser to the trace' | 274 'browser to the trace' |
| 272 } | 275 } |
| 273 }); | 276 }); |
| 274 | 277 |
| 275 memoryMetricTest('dumpCountsOnly_webview', function(model) { | 278 memoryMetricTest('dumpCountsOnly_webview', function(model) { |
| 276 var p = createWebViewProcess(model); | 279 var p = createWebViewProcess(model); |
| 277 addProcessMemoryDump(addGlobalMemoryDump(model, 45, LIGHT), p, 45); | 280 addProcessMemoryDump(addGlobalMemoryDump( |
| 278 addProcessMemoryDump(addGlobalMemoryDump(model, 68, LIGHT), p, 68); | 281 model, {ts: 45, levelOfDetail: LIGHT}), p, {ts: 45}); |
| 279 }, { | 282 addProcessMemoryDump(addGlobalMemoryDump( |
| 283 model, {ts: 68, levelOfDetail: LIGHT}), p, {ts: 68}); |
| 284 }, undefined /* opt_options */, { |
| 280 'memory:webview:all_processes:dump_count:detailed': { | 285 'memory:webview:all_processes:dump_count:detailed': { |
| 281 value: 0, | 286 value: 0, |
| 282 unit: unitlessNumber_smallerIsBetter, | 287 unit: unitlessNumber_smallerIsBetter, |
| 283 description: 'total number of detailed memory dumps added by WebView ' + | 288 description: 'total number of detailed memory dumps added by WebView ' + |
| 284 'to the trace' | 289 'to the trace' |
| 285 }, | 290 }, |
| 286 'memory:webview:all_processes:dump_count:light': { | 291 'memory:webview:all_processes:dump_count:light': { |
| 287 value: 2, | 292 value: 2, |
| 288 unit: unitlessNumber_smallerIsBetter, | 293 unit: unitlessNumber_smallerIsBetter, |
| 289 description: 'total number of light memory dumps added by WebView to ' + | 294 description: 'total number of light memory dumps added by WebView to ' + |
| (...skipping 18 matching lines...) Expand all Loading... |
| 308 }); | 313 }); |
| 309 | 314 |
| 310 memoryMetricTest('generalValues_chrome', function(model) { | 315 memoryMetricTest('generalValues_chrome', function(model) { |
| 311 var pBrowser = createChromeBrowserProcess(model); | 316 var pBrowser = createChromeBrowserProcess(model); |
| 312 var pRendererA = createProcessWithName(model, 'Renderer'); | 317 var pRendererA = createProcessWithName(model, 'Renderer'); |
| 313 var pRendererB = createProcessWithName(model, 'Renderer'); | 318 var pRendererB = createProcessWithName(model, 'Renderer'); |
| 314 var pPpapi = createProcessWithName(model, 'PPAPI Process'); | 319 var pPpapi = createProcessWithName(model, 'PPAPI Process'); |
| 315 var pUnknown = createProcessWithName(model, undefined); | 320 var pUnknown = createProcessWithName(model, undefined); |
| 316 | 321 |
| 317 // Timestamp 1. | 322 // Timestamp 1. |
| 318 var gmd1 = addGlobalMemoryDump(model, 20); | 323 var gmd1 = addGlobalMemoryDump(model, {ts: 20}); |
| 319 var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, 19); | 324 var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, {ts: 19}); |
| 320 pmdBrowser1.memoryAllocatorDumps = [ | 325 pmdBrowser1.memoryAllocatorDumps = [ |
| 321 newAllocatorDump(pmdBrowser1, 'malloc', { | 326 newAllocatorDump(pmdBrowser1, 'malloc', {numerics: { |
| 322 'size': 8, | 327 size: 8, |
| 323 'allocated_objects_size': 4 | 328 allocated_objects_size: 4 |
| 324 }) | 329 }}) |
| 325 ]; | 330 ]; |
| 326 var pmdRendererA1 = addProcessMemoryDump(gmd1, pRendererA, 20); | 331 var pmdRendererA1 = addProcessMemoryDump(gmd1, pRendererA, {ts: 20}); |
| 327 pmdRendererA1.memoryAllocatorDumps = (function() { | 332 pmdRendererA1.memoryAllocatorDumps = (function() { |
| 328 var mallocDump = | 333 var mallocDump = |
| 329 newAllocatorDump(pmdRendererA1, 'malloc', { 'size': 16 }); | 334 newAllocatorDump(pmdRendererA1, 'malloc', {numerics: {size: 16}}); |
| 330 var partitionAllocDump = | 335 var partitionAllocDump = |
| 331 newAllocatorDump(pmdRendererA1, 'partition_alloc'); | 336 newAllocatorDump(pmdRendererA1, 'partition_alloc'); |
| 332 addOwnershipLink( | 337 addOwnershipLink( |
| 333 addChildDump(partitionAllocDump, 'allocated_objects', { 'size': 32 }), | 338 addChildDump(partitionAllocDump, 'allocated_objects', |
| 334 addChildDump(partitionAllocDump, 'partitions', { 'size': 24 })); | 339 {numerics: {size: 32}}), |
| 340 addChildDump(partitionAllocDump, 'partitions', |
| 341 {numerics: {size: 24}})); |
| 335 return [mallocDump, partitionAllocDump]; | 342 return [mallocDump, partitionAllocDump]; |
| 336 })(); | 343 })(); |
| 337 var pmdGpu1 = addProcessMemoryDump(gmd1, pPpapi, 21); | 344 var pmdGpu1 = addProcessMemoryDump(gmd1, pPpapi, {ts: 21}); |
| 338 pmdGpu1.memoryAllocatorDumps = [ | 345 pmdGpu1.memoryAllocatorDumps = [ |
| 339 newAllocatorDump(pmdGpu1, 'gpu', { | 346 newAllocatorDump(pmdGpu1, 'gpu', {numerics: { |
| 340 'size': 30, | 347 size: 30, |
| 341 'allocated_objects_size': 25 | 348 allocated_objects_size: 25 |
| 342 }) | 349 }}) |
| 343 ]; | 350 ]; |
| 344 | 351 |
| 345 // Timestamp 2. | 352 // Timestamp 2. |
| 346 var gmd2 = addGlobalMemoryDump(model, 40); | 353 var gmd2 = addGlobalMemoryDump(model, {ts: 40}); |
| 347 var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, 41); | 354 var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, {ts: 41}); |
| 348 pmdBrowser2.memoryAllocatorDumps = (function() { | 355 pmdBrowser2.memoryAllocatorDumps = (function() { |
| 349 var mallocDump = newAllocatorDump(pmdBrowser2, 'malloc', { 'size': 120 }); | 356 var mallocDump = newAllocatorDump(pmdBrowser2, 'malloc', |
| 357 {numerics: {size: 120}}); |
| 350 var tracingDump = | 358 var tracingDump = |
| 351 newAllocatorDump(pmdBrowser2, 'tracing', { 'size': 40 }); | 359 newAllocatorDump(pmdBrowser2, 'tracing', {numerics: {size: 40}}); |
| 352 return [mallocDump, tracingDump]; | 360 return [mallocDump, tracingDump]; |
| 353 })(); | 361 })(); |
| 354 var pmdRendererA2 = addProcessMemoryDump(gmd2, pRendererA, 39); | 362 var pmdRendererA2 = addProcessMemoryDump(gmd2, pRendererA, {ts: 39}); |
| 355 pmdRendererA2.memoryAllocatorDumps = (function() { | 363 pmdRendererA2.memoryAllocatorDumps = (function() { |
| 356 var partitionAllocDump = | 364 var partitionAllocDump = |
| 357 newAllocatorDump(pmdRendererA2, 'partition_alloc'); | 365 newAllocatorDump(pmdRendererA2, 'partition_alloc'); |
| 358 addOwnershipLink( | 366 addOwnershipLink( |
| 359 addChildDump(partitionAllocDump, 'allocated_objects', | 367 addChildDump(partitionAllocDump, 'allocated_objects', |
| 360 { 'size': 320 }), | 368 {numerics: {size: 320}}), |
| 361 addChildDump(partitionAllocDump, 'partitions', { 'size': 240 })); | 369 addChildDump(partitionAllocDump, 'partitions', |
| 362 var v8Dump = newAllocatorDump(pmdRendererA2, 'v8', { 'size': 650 }); | 370 {numerics: {size: 240}})); |
| 371 var v8Dump = newAllocatorDump(pmdRendererA2, 'v8', |
| 372 {numerics: {size: 650}}); |
| 373 var isolateDumpA = addChildDump(v8Dump, 'isolate_A'); |
| 374 addChildDump(isolateDumpA, 'malloc', {numerics: {size: 1 }}); |
| 375 var isolateDumpB = addChildDump(v8Dump, 'isolate_B'); |
| 376 addChildDump(isolateDumpB, 'malloc', {numerics: {size: 10 }}); |
| 363 return [partitionAllocDump, v8Dump]; | 377 return [partitionAllocDump, v8Dump]; |
| 364 })(); | 378 })(); |
| 365 var pmdRendererB2 = addProcessMemoryDump(gmd2, pRendererB, 40); | 379 var pmdRendererB2 = addProcessMemoryDump(gmd2, pRendererB, {ts: 40}); |
| 366 pmdRendererB2.memoryAllocatorDumps = [ | 380 pmdRendererB2.memoryAllocatorDumps = [ |
| 367 newAllocatorDump(pmdRendererB2, 'v8', { | 381 newAllocatorDump(pmdRendererB2, 'v8', {numerics: { |
| 368 'size': 970, | 382 size: 970, |
| 369 'allocated_objects_size': 860 | 383 allocated_objects_size: 860 |
| 370 }), | 384 }}), |
| 371 newAllocatorDump(pmdRendererB2, 'malloc', { | 385 newAllocatorDump(pmdRendererB2, 'malloc', |
| 372 'allocated_objects_size': 750 | 386 {numerics: {allocated_objects_size: 750}}) |
| 373 }) | |
| 374 ]; | 387 ]; |
| 375 var pmdUnknown = addProcessMemoryDump(gmd2, pUnknown, 42); | 388 var pmdUnknown = addProcessMemoryDump(gmd2, pUnknown, {ts: 42}); |
| 376 pmdUnknown.memoryAllocatorDumps = [ | 389 pmdUnknown.memoryAllocatorDumps = [ |
| 377 newAllocatorDump(pmdRendererB2, 'v8', { | 390 newAllocatorDump(pmdRendererB2, 'v8', {numerics: {size: 111}}) |
| 378 'size': 111 | |
| 379 }) | |
| 380 ]; | 391 ]; |
| 381 | 392 |
| 382 // Timestamp 3. | 393 // Timestamp 3. |
| 383 var gmd3 = addGlobalMemoryDump(model, 60); | 394 var gmd3 = addGlobalMemoryDump(model, {ts: 60}); |
| 384 var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, 60); | 395 var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, {ts: 60}); |
| 385 pmdBrowser3.memoryAllocatorDumps = [ | 396 pmdBrowser3.memoryAllocatorDumps = [ |
| 386 newAllocatorDump(pmdBrowser3, 'malloc', { | 397 newAllocatorDump(pmdBrowser3, 'malloc', {numerics: { |
| 387 'size': 8000, | 398 size: 8000, |
| 388 'allocated_objects_size': 4000 | 399 allocated_objects_size: 4000 |
| 389 }) | 400 }}) |
| 390 ]; | 401 ]; |
| 391 var pmdRendererB3 = addProcessMemoryDump(gmd3, pRendererB, 61); | 402 var pmdRendererB3 = addProcessMemoryDump(gmd3, pRendererB, {ts: 61}); |
| 392 // Intentionally pmdRendererB3.memoryAllocatorDumps undefined. | 403 // Intentionally pmdRendererB3.memoryAllocatorDumps undefined. |
| 393 var pmdGpu3 = addProcessMemoryDump(gmd3, pPpapi, 59); | 404 var pmdGpu3 = addProcessMemoryDump(gmd3, pPpapi, {ts: 59}); |
| 394 pmdGpu3.memoryAllocatorDumps = [ | 405 pmdGpu3.memoryAllocatorDumps = [ |
| 395 newAllocatorDump(pmdGpu3, 'gpu', { 'size': 300 }) | 406 newAllocatorDump(pmdGpu3, 'gpu', {numerics: {size: 300}}) |
| 396 ]; | 407 ]; |
| 397 | 408 |
| 398 // Timestamp 4. | 409 // Timestamp 4. |
| 399 var gmd4 = addGlobalMemoryDump(model, 80); | 410 var gmd4 = addGlobalMemoryDump(model, {ts: 80}); |
| 400 var pmdBrowser4 = addProcessMemoryDump(gmd4, pBrowser, 81); | 411 var pmdBrowser4 = addProcessMemoryDump(gmd4, pBrowser, {ts: 81}); |
| 401 pmdBrowser4.memoryAllocatorDumps = [ | 412 pmdBrowser4.memoryAllocatorDumps = [ |
| 402 newAllocatorDump(pmdBrowser4, 'malloc', { 'size': 80000 }) | 413 newAllocatorDump(pmdBrowser4, 'malloc', {numerics: {size: 80000}}) |
| 403 ]; | 414 ]; |
| 404 var pmdRendererB4 = addProcessMemoryDump(gmd4, pRendererB, 79); | 415 var pmdRendererB4 = addProcessMemoryDump(gmd4, pRendererB, {ts: 79}); |
| 405 pmdRendererB4.memoryAllocatorDumps = (function() { | 416 pmdRendererB4.memoryAllocatorDumps = (function() { |
| 406 var v8Dump = newAllocatorDump(pmdRendererB4, 'v8', { 'size': 9e5 }); | 417 var v8Dump = newAllocatorDump(pmdRendererB4, 'v8', |
| 418 {numerics: {size: 9e5}}); |
| 407 var partitionAllocDump = newAllocatorDump(pmdRendererB4, | 419 var partitionAllocDump = newAllocatorDump(pmdRendererB4, |
| 408 'partition_alloc', { 'size': 5e5 }); | 420 'partition_alloc', {numerics: {size: 5e5}}); |
| 409 addOwnershipLink(partitionAllocDump, v8Dump); | 421 addOwnershipLink(partitionAllocDump, v8Dump); |
| 410 return [v8Dump, partitionAllocDump]; | 422 return [v8Dump, partitionAllocDump]; |
| 411 })(); | 423 })(); |
| 412 var pmdGpu4 = addProcessMemoryDump(gmd4, pPpapi, 80); | 424 var pmdGpu4 = addProcessMemoryDump(gmd4, pPpapi, {ts: 80}); |
| 413 pmdGpu4.memoryAllocatorDumps = [ | 425 pmdGpu4.memoryAllocatorDumps = [ |
| 414 newAllocatorDump(pmdGpu4, 'gpu', { 'memtrack_pss': 666 /* ignored */ }) | 426 newAllocatorDump(pmdGpu4, 'gpu', |
| 427 {numerics: {memtrack_pss: 666 /* ignored */}}) |
| 415 ]; | 428 ]; |
| 416 }, { | 429 }, undefined /* opt_options */, { |
| 417 'memory:chrome:all_processes:dump_count:detailed': { | 430 'memory:chrome:all_processes:dump_count:detailed': { |
| 418 value: 0, | 431 value: 0, |
| 419 unit: unitlessNumber_smallerIsBetter, | 432 unit: unitlessNumber_smallerIsBetter, |
| 420 description: 'total number of detailed memory dumps added by Chrome to ' + | 433 description: 'total number of detailed memory dumps added by Chrome to ' + |
| 421 'the trace' | 434 'the trace' |
| 422 }, | 435 }, |
| 423 'memory:chrome:all_processes:dump_count:light': { | 436 'memory:chrome:all_processes:dump_count:light': { |
| 424 value: 4, | 437 value: 4, |
| 425 unit: unitlessNumber_smallerIsBetter, | 438 unit: unitlessNumber_smallerIsBetter, |
| 426 description: 'total number of light memory dumps added by Chrome to ' + | 439 description: 'total number of light memory dumps added by Chrome to ' + |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 value: [32, 320, 0, 5e5], | 492 value: [32, 320, 0, 5e5], |
| 480 unit: sizeInBytes_smallerIsBetter, | 493 unit: sizeInBytes_smallerIsBetter, |
| 481 description: 'effective size of partition_alloc in all processes ' + | 494 description: 'effective size of partition_alloc in all processes ' + |
| 482 'in Chrome' | 495 'in Chrome' |
| 483 }, | 496 }, |
| 484 'memory:chrome:all_processes:reported_by_chrome:tracing:effective_size': { | 497 'memory:chrome:all_processes:reported_by_chrome:tracing:effective_size': { |
| 485 value: [0, 40, 0, 0], | 498 value: [0, 40, 0, 0], |
| 486 unit: sizeInBytes_smallerIsBetter, | 499 unit: sizeInBytes_smallerIsBetter, |
| 487 description: 'effective size of tracing in all processes in Chrome' | 500 description: 'effective size of tracing in all processes in Chrome' |
| 488 }, | 501 }, |
| 502 'memory:chrome:all_processes:reported_by_chrome:v8:allocated_by_malloc:effec
tive_size': |
| 503 { |
| 504 value: [0, 1 + 10, 0, 0], |
| 505 unit: sizeInBytes_smallerIsBetter, |
| 506 description: 'effective size of objects allocated by malloc for v8 ' + |
| 507 'in all processes in Chrome' |
| 508 }, |
| 489 'memory:chrome:all_processes:reported_by_chrome:v8:effective_size': { | 509 'memory:chrome:all_processes:reported_by_chrome:v8:effective_size': { |
| 490 value: [0, 650 + 970 + 111, 0, 4e5], | 510 value: [0, 650 + 970 + 111, 0, 4e5], |
| 491 unit: sizeInBytes_smallerIsBetter, | 511 unit: sizeInBytes_smallerIsBetter, |
| 492 description: 'effective size of v8 in all processes in Chrome' | 512 description: 'effective size of v8 in all processes in Chrome' |
| 493 }, | 513 }, |
| 494 'memory:chrome:all_processes:reported_by_chrome:v8:allocated_objects_size': | 514 'memory:chrome:all_processes:reported_by_chrome:v8:allocated_objects_size': |
| 495 { | 515 { |
| 496 value: [0, 860, 0, 0], | 516 value: [0, 860, 0, 0], |
| 497 unit: sizeInBytes_smallerIsBetter, | 517 unit: sizeInBytes_smallerIsBetter, |
| 498 description: 'size of all objects allocated by v8 in all processes ' + | 518 description: 'size of all objects allocated by v8 in all processes ' + |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 description: 'size of all objects allocated by malloc in renderer ' + | 613 description: 'size of all objects allocated by malloc in renderer ' + |
| 594 'processes in Chrome' | 614 'processes in Chrome' |
| 595 }, | 615 }, |
| 596 'memory:chrome:renderer_processes:reported_by_chrome:partition_alloc:effecti
ve_size': | 616 'memory:chrome:renderer_processes:reported_by_chrome:partition_alloc:effecti
ve_size': |
| 597 { | 617 { |
| 598 value: [32, 320, 0, 5e5], | 618 value: [32, 320, 0, 5e5], |
| 599 unit: sizeInBytes_smallerIsBetter, | 619 unit: sizeInBytes_smallerIsBetter, |
| 600 description: 'effective size of partition_alloc in renderer ' + | 620 description: 'effective size of partition_alloc in renderer ' + |
| 601 'processes in Chrome' | 621 'processes in Chrome' |
| 602 }, | 622 }, |
| 623 'memory:chrome:renderer_processes:reported_by_chrome:v8:allocated_by_malloc:
effective_size': |
| 624 { |
| 625 value: [0, 1 + 10, 0, 0], |
| 626 unit: sizeInBytes_smallerIsBetter, |
| 627 description: 'effective size of objects allocated by malloc for v8 ' + |
| 628 'in renderer processes in Chrome' |
| 629 }, |
| 603 'memory:chrome:renderer_processes:reported_by_chrome:v8:effective_size': { | 630 'memory:chrome:renderer_processes:reported_by_chrome:v8:effective_size': { |
| 604 value: [0, 650 + 970, 0, 4e5], | 631 value: [0, 650 + 970, 0, 4e5], |
| 605 unit: sizeInBytes_smallerIsBetter, | 632 unit: sizeInBytes_smallerIsBetter, |
| 606 description: 'effective size of v8 in renderer processes in Chrome' | 633 description: 'effective size of v8 in renderer processes in Chrome' |
| 607 }, | 634 }, |
| 608 'memory:chrome:renderer_processes:reported_by_chrome:v8:allocated_objects_si
ze': | 635 'memory:chrome:renderer_processes:reported_by_chrome:v8:allocated_objects_si
ze': |
| 609 { | 636 { |
| 610 value: [0, 860, 0, 0], | 637 value: [0, 860, 0, 0], |
| 611 unit: sizeInBytes_smallerIsBetter, | 638 unit: sizeInBytes_smallerIsBetter, |
| 612 description: 'size of all objects allocated by v8 in renderer ' + | 639 description: 'size of all objects allocated by v8 in renderer ' + |
| (...skipping 18 matching lines...) Expand all Loading... |
| 631 }); | 658 }); |
| 632 | 659 |
| 633 memoryMetricTest('detailedValues_unknownBrowser', function(model) { | 660 memoryMetricTest('detailedValues_unknownBrowser', function(model) { |
| 634 var pBrowser = createProcessWithName(model, 'Browser'); | 661 var pBrowser = createProcessWithName(model, 'Browser'); |
| 635 var pRendererA = createProcessWithName(model, 'Renderer'); | 662 var pRendererA = createProcessWithName(model, 'Renderer'); |
| 636 var pRendererB = createProcessWithName(model, 'Renderer'); | 663 var pRendererB = createProcessWithName(model, 'Renderer'); |
| 637 var pRendererC = createProcessWithName(model, 'Renderer'); | 664 var pRendererC = createProcessWithName(model, 'Renderer'); |
| 638 var pGpu = createProcessWithName(model, 'GPU Process'); | 665 var pGpu = createProcessWithName(model, 'GPU Process'); |
| 639 | 666 |
| 640 // Timestamp 1. | 667 // Timestamp 1. |
| 641 var gmd1 = addGlobalMemoryDump(model, 10, DETAILED); | 668 var gmd1 = addGlobalMemoryDump(model, {ts: 10, levelOfDetail: DETAILED}); |
| 642 var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, 9); | 669 var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, {ts: 9}); |
| 643 pmdBrowser1.vmRegions = VMRegionClassificationNode.fromRegions([ | 670 pmdBrowser1.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 644 new VMRegion(0xABCD, 128, 0, '/dev/ashmem/dalvik-non moving space', | 671 new VMRegion(0xABCD, 128, 0, '/dev/ashmem/dalvik-non moving space', |
| 645 { 'privateDirtyResident': 8 }) | 672 {privateDirtyResident: 8}) |
| 646 ]); | 673 ]); |
| 647 var pmdRendererA1 = addProcessMemoryDump(gmd1, pRendererA, 10); | 674 var pmdRendererA1 = addProcessMemoryDump(gmd1, pRendererA, {ts: 10}); |
| 648 pmdRendererA1.vmRegions = VMRegionClassificationNode.fromRegions([ | 675 pmdRendererA1.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 649 new VMRegion(0xEF01, 256, 0, '[anon:libc_malloc]', | 676 new VMRegion(0xEF01, 256, 0, '[anon:libc_malloc]', |
| 650 { 'privateDirtyResident': 17 }) | 677 {privateDirtyResident: 17}) |
| 651 ]); | 678 ]); |
| 652 var pmdRendererB1 = addProcessMemoryDump(gmd1, pRendererB, 11); | 679 var pmdRendererB1 = addProcessMemoryDump(gmd1, pRendererB, {ts: 11}); |
| 653 pmdRendererB1.vmRegions = VMRegionClassificationNode.fromRegions([ | 680 pmdRendererB1.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 654 new VMRegion(0x2345, 512, 0, '[heap]', | 681 new VMRegion(0x2345, 512, 0, '[heap]', |
| 655 { 'proportionalResident': 67, 'privateDirtyResident': 34 }) | 682 {proportionalResident: 67, privateDirtyResident: 34}) |
| 656 ]); | 683 ]); |
| 657 pmdRendererB1.memoryAllocatorDumps = [ | 684 pmdRendererB1.memoryAllocatorDumps = [ |
| 658 newAllocatorDump(pmdRendererA4, 'v8', { 'code_and_metadata_size': 16 }) | 685 newAllocatorDump(pmdRendererA4, 'v8', |
| 686 {numerics: {code_and_metadata_size: 16}}) |
| 659 ]; | 687 ]; |
| 660 var pmdGpu1 = addProcessMemoryDump(gmd1, pGpu, 10); | 688 var pmdGpu1 = addProcessMemoryDump(gmd1, pGpu, {ts: 10}); |
| 661 pmdGpu1.memoryAllocatorDumps = (function() { | 689 pmdGpu1.memoryAllocatorDumps = (function() { |
| 662 var gpuDump = newAllocatorDump(pmdGpu1, 'gpu'); | 690 var gpuDump = newAllocatorDump(pmdGpu1, 'gpu'); |
| 663 var memtrackDump = addChildDump(gpuDump, 'android_memtrack'); | 691 var memtrackDump = addChildDump(gpuDump, 'android_memtrack'); |
| 664 addChildDump(memtrackDump, 'gl', { 'memtrack_pss': 100 }); | 692 addChildDump(memtrackDump, 'gl', {numerics: {memtrack_pss: 100}}); |
| 665 addChildDump(memtrackDump, 'graphics', { 'memtrack_pss': 200 }); | 693 addChildDump(memtrackDump, 'graphics', {numerics: {memtrack_pss: 200}}); |
| 666 return [gpuDump]; | 694 return [gpuDump]; |
| 667 })(); | 695 })(); |
| 668 | 696 |
| 669 // Timestamp 2 (light global memory dump, so it should be skipped for | 697 // Timestamp 2 (light global memory dump, so it should be skipped for |
| 670 // mmaps_* values). | 698 // mmaps_* values). |
| 671 var gmd2 = addGlobalMemoryDump(model, 20, LIGHT); | 699 var gmd2 = addGlobalMemoryDump(model, {ts: 20, levelOfDetail: LIGHT}); |
| 672 var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, 18); | 700 var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, {ts: 18}); |
| 673 pmdBrowser2.vmRegions = VMRegionClassificationNode.fromRegions([ | 701 pmdBrowser2.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 674 new VMRegion(0x999, 999, 999, '/dev/ashmem/dalvik-main space', | 702 new VMRegion(0x999, 999, 999, '/dev/ashmem/dalvik-main space', |
| 675 { 'proportionalResident': 999 }) | 703 {proportionalResident: 999}) |
| 676 ]); | 704 ]); |
| 677 var pmdRendererA2 = addProcessMemoryDump(gmd2, pRendererA, 19); | 705 var pmdRendererA2 = addProcessMemoryDump(gmd2, pRendererA, {ts: 19}); |
| 678 pmdRendererA2.memoryAllocatorDumps = [ | 706 pmdRendererA2.memoryAllocatorDumps = [ |
| 679 newAllocatorDump(pmdRendererA4, 'v8', { | 707 newAllocatorDump(pmdRendererA4, 'v8', |
| 680 'bytecode_and_metadata_size': 678 | 708 {numerics: {bytecode_and_metadata_size: 678}}) |
| 681 }) | |
| 682 ]; | 709 ]; |
| 683 var pmdRendererB2 = addProcessMemoryDump(gmd2, pRendererB, 21); | 710 var pmdRendererB2 = addProcessMemoryDump(gmd2, pRendererB, {ts: 21}); |
| 684 var pmdRendererC2 = addProcessMemoryDump(gmd2, pRendererC, 22); | 711 var pmdRendererC2 = addProcessMemoryDump(gmd2, pRendererC, {ts: 22}); |
| 685 var pmdGpu2 = addProcessMemoryDump(gmd2, pGpu, 20); | 712 var pmdGpu2 = addProcessMemoryDump(gmd2, pGpu, {ts: 20}); |
| 686 pmdGpu2.memoryAllocatorDumps = (function() { | 713 pmdGpu2.memoryAllocatorDumps = (function() { |
| 687 var gpuDump = newAllocatorDump(pmdGpu2, 'gpu'); | 714 var gpuDump = newAllocatorDump(pmdGpu2, 'gpu'); |
| 688 var memtrackDump = addChildDump(gpuDump, 'android_memtrack'); | 715 var memtrackDump = addChildDump(gpuDump, 'android_memtrack'); |
| 689 addChildDump(memtrackDump, 'gl', { 'memtrack_pss': 12345 }); | 716 addChildDump(memtrackDump, 'gl', {numerics: {memtrack_pss: 12345}}); |
| 690 return [gpuDump]; | 717 return [gpuDump]; |
| 691 })(); | 718 })(); |
| 692 | 719 |
| 693 // Timestamp 3. | 720 // Timestamp 3. |
| 694 var gmd3 = addGlobalMemoryDump(model, 30, DETAILED); | 721 var gmd3 = addGlobalMemoryDump(model, {ts: 30, levelOfDetail: DETAILED}); |
| 695 var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, 30); | 722 var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, {ts: 30}); |
| 696 pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([ | 723 pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 697 new VMRegion(0xABCD, 1024, 0, '/dev/ashmem/dalvik-non moving space', | 724 new VMRegion(0xABCD, 1024, 0, '/dev/ashmem/dalvik-non moving space', |
| 698 { 'proportionalResident': 3, 'privateDirtyResident': 80 }) | 725 {proportionalResident: 3, privateDirtyResident: 80}) |
| 699 ]); | 726 ]); |
| 700 var pmdRendererA3 = addProcessMemoryDump(gmd3, pRendererA, 29); | 727 var pmdRendererA3 = addProcessMemoryDump(gmd3, pRendererA, {ts: 29}); |
| 701 // Intentionally pmdRendererA3.vmRegions undefined. | 728 // Intentionally pmdRendererA3.vmRegions undefined. |
| 702 var pmdRendererC3 = addProcessMemoryDump(gmd3, pRendererC, 31); | 729 var pmdRendererC3 = addProcessMemoryDump(gmd3, pRendererC, {ts: 31}); |
| 703 pmdRendererC3.vmRegions = VMRegionClassificationNode.fromRegions([ | 730 pmdRendererC3.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 704 new VMRegion(0x2345, 2048, 0, '/no/matching/category', | 731 new VMRegion(0x2345, 2048, 0, '/no/matching/category', |
| 705 { 'proportionalResident': 200 }), | 732 {proportionalResident: 200}), |
| 706 new VMRegion(0x2345, 2048, 0, '/dev/ashmem', | 733 new VMRegion(0x2345, 2048, 0, '/dev/ashmem', {proportionalResident: 500}), |
| 707 { 'proportionalResident': 500 }), | |
| 708 ]); | 734 ]); |
| 709 var pmdGpu3 = addProcessMemoryDump(gmd3, pGpu, 30); | 735 var pmdGpu3 = addProcessMemoryDump(gmd3, pGpu, {ts: 30}); |
| 710 pmdGpu3.memoryAllocatorDumps = (function() { | 736 pmdGpu3.memoryAllocatorDumps = (function() { |
| 711 var gpuDump = newAllocatorDump(pmdGpu3, 'gpu', | 737 var gpuDump = newAllocatorDump(pmdGpu3, 'gpu', |
| 712 { 'memtrack_pss': 6000 /* ignored */ }); | 738 {numerics: {memtrack_pss: 6000 /* ignored */}}); |
| 713 var memtrackDump = addChildDump(gpuDump, 'android_memtrack', | 739 var memtrackDump = addChildDump(gpuDump, 'android_memtrack', |
| 714 { 'memtrack_pss': 5000 /* ignored */ }); | 740 {numerics: {memtrack_pss: 5000 /* ignored */}}); |
| 715 addChildDump(memtrackDump, 'gl', { 'memtrack_pss': 3000 }); | 741 addChildDump(memtrackDump, 'gl', {numerics: {memtrack_pss: 3000}}); |
| 716 addChildDump(memtrackDump, 'graphics', { 'ignored': 2000 }); | 742 addChildDump(memtrackDump, 'graphics', {numerics: {ignored: 2000}}); |
| 717 addChildDump(memtrackDump, 'gfx', { 'memtrack_pss': 1000 }); | 743 addChildDump(memtrackDump, 'gfx', {numerics: {memtrack_pss: 1000}}); |
| 718 return [gpuDump]; | 744 return [gpuDump]; |
| 719 })(); | 745 })(); |
| 720 pmdGpu3.vmRegions = VMRegionClassificationNode.fromRegions([ | 746 pmdGpu3.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 721 new VMRegion(0xCDCD, 4096, 0, '/dev/ashmem/dalvik-zygote space', | 747 new VMRegion(0xCDCD, 4096, 0, '/dev/ashmem/dalvik-zygote space', |
| 722 { 'proportionalResident': 150, 'privateDirtyResident': 90 }) | 748 {proportionalResident: 150, privateDirtyResident: 90}) |
| 723 ]); | 749 ]); |
| 724 | 750 |
| 725 // Timestamp 4. | 751 // Timestamp 4. |
| 726 var gmd4 = addGlobalMemoryDump(model, 40, DETAILED); | 752 var gmd4 = addGlobalMemoryDump(model, {ts: 40, levelOfDetail: DETAILED}); |
| 727 var pmdBrowser4 = addProcessMemoryDump(gmd4, pBrowser, 40); | 753 var pmdBrowser4 = addProcessMemoryDump(gmd4, pBrowser, {ts: 40}); |
| 728 var pmdRendererA4 = addProcessMemoryDump(gmd4, pRendererA, 40); | 754 var pmdRendererA4 = addProcessMemoryDump(gmd4, pRendererA, {ts: 40}); |
| 729 pmdRendererA4.memoryAllocatorDumps = [ | 755 pmdRendererA4.memoryAllocatorDumps = [ |
| 730 newAllocatorDump(pmdRendererA4, 'v8', { | 756 newAllocatorDump(pmdRendererA4, 'v8', {numerics: { |
| 731 'code_and_metadata_size': 21, | 757 code_and_metadata_size: 21, |
| 732 'bytecode_and_metadata_size': 35 | 758 bytecode_and_metadata_size: 35 |
| 733 }) | 759 }}) |
| 734 ]; | 760 ]; |
| 735 }, { | 761 }, undefined /* opt_options */, { |
| 736 'memory:unknown_browser:all_processes:dump_count:detailed': { | 762 'memory:unknown_browser:all_processes:dump_count:detailed': { |
| 737 value: 3, | 763 value: 3, |
| 738 unit: unitlessNumber_smallerIsBetter, | 764 unit: unitlessNumber_smallerIsBetter, |
| 739 description: 'total number of detailed memory dumps added by an ' + | 765 description: 'total number of detailed memory dumps added by an ' + |
| 740 'unknown browser to the trace' | 766 'unknown browser to the trace' |
| 741 }, | 767 }, |
| 742 'memory:unknown_browser:all_processes:dump_count:light': { | 768 'memory:unknown_browser:all_processes:dump_count:light': { |
| 743 value: 1, | 769 value: 1, |
| 744 unit: unitlessNumber_smallerIsBetter, | 770 unit: unitlessNumber_smallerIsBetter, |
| 745 description: 'total number of light memory dumps added by an unknown ' + | 771 description: 'total number of light memory dumps added by an unknown ' + |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1134 unit: sizeInBytes_smallerIsBetter, | 1160 unit: sizeInBytes_smallerIsBetter, |
| 1135 description: 'proportional resident size (PSS) of the native heap ' + | 1161 description: 'proportional resident size (PSS) of the native heap ' + |
| 1136 'in renderer processes in an unknown browser' | 1162 'in renderer processes in an unknown browser' |
| 1137 } | 1163 } |
| 1138 }); | 1164 }); |
| 1139 | 1165 |
| 1140 memoryMetricTest('combined_chrome', function(model) { | 1166 memoryMetricTest('combined_chrome', function(model) { |
| 1141 var pBrowser = createChromeBrowserProcess(model); | 1167 var pBrowser = createChromeBrowserProcess(model); |
| 1142 | 1168 |
| 1143 // Timestamp 1. | 1169 // Timestamp 1. |
| 1144 var gmd1 = addGlobalMemoryDump(model, 10, DETAILED); | 1170 var gmd1 = addGlobalMemoryDump(model, {ts: 10, levelOfDetail: DETAILED}); |
| 1145 var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, 10); | 1171 var pmdBrowser1 = addProcessMemoryDump(gmd1, pBrowser, {ts: 10}); |
| 1146 pmdBrowser1.vmRegions = VMRegionClassificationNode.fromRegions([ | 1172 pmdBrowser1.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 1147 new VMRegion(0xABCD, 128, 0, '/dev/ashmem/dalvik-non moving space', | 1173 new VMRegion(0xABCD, 128, 0, '/dev/ashmem/dalvik-non moving space', |
| 1148 { 'privateDirtyResident': 100 }) | 1174 {privateDirtyResident: 100}) |
| 1149 ]); | 1175 ]); |
| 1150 | 1176 |
| 1151 // Timestamp 2 (light global memory dump, so it should be skipped for | 1177 // Timestamp 2 (light global memory dump, so it should be skipped for |
| 1152 // mmaps_* values). | 1178 // mmaps_* values). |
| 1153 var gmd2 = addGlobalMemoryDump(model, 20, LIGHT); | 1179 var gmd2 = addGlobalMemoryDump(model, {ts: 20, levelOfDetail: LIGHT}); |
| 1154 var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, 20); | 1180 var pmdBrowser2 = addProcessMemoryDump(gmd2, pBrowser, {ts: 20}); |
| 1155 pmdBrowser2.memoryAllocatorDumps = [ | 1181 pmdBrowser2.memoryAllocatorDumps = [ |
| 1156 newAllocatorDump(pmdBrowser2, 'malloc', { size: 32 }) | 1182 newAllocatorDump(pmdBrowser2, 'malloc', {numerics: {size: 32}}) |
| 1157 ]; | 1183 ]; |
| 1158 | 1184 |
| 1159 // Timestamp 3. | 1185 // Timestamp 3. |
| 1160 var gmd3 = addGlobalMemoryDump(model, 30, DETAILED); | 1186 var gmd3 = addGlobalMemoryDump(model, {ts: 30, levelOfDetail: DETAILED}); |
| 1161 var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, 30); | 1187 var pmdBrowser3 = addProcessMemoryDump(gmd3, pBrowser, {ts: 30}); |
| 1162 pmdBrowser3.memoryAllocatorDumps = [ | 1188 pmdBrowser3.memoryAllocatorDumps = [ |
| 1163 newAllocatorDump(pmdBrowser3, 'malloc', { size: 48 }) | 1189 newAllocatorDump(pmdBrowser3, 'malloc', {numerics: {size: 48}}) |
| 1164 ]; | 1190 ]; |
| 1165 pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([ | 1191 pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 1166 new VMRegion(0xABCD, 1024, 0, '/dev/ashmem/dalvik-non moving space', | 1192 new VMRegion(0xABCD, 1024, 0, '/dev/ashmem/dalvik-non moving space', |
| 1167 { 'privateDirtyResident': 150 }) | 1193 {privateDirtyResident: 150}) |
| 1168 ]); | 1194 ]); |
| 1169 }, { | 1195 }, {} /* opt_options */, { |
| 1170 'memory:chrome:all_processes:dump_count:detailed': { | 1196 'memory:chrome:all_processes:dump_count:detailed': { |
| 1171 value: 2, | 1197 value: 2, |
| 1172 unit: unitlessNumber_smallerIsBetter, | 1198 unit: unitlessNumber_smallerIsBetter, |
| 1173 description: 'total number of detailed memory dumps added by Chrome to ' + | 1199 description: 'total number of detailed memory dumps added by Chrome to ' + |
| 1174 'the trace' | 1200 'the trace' |
| 1175 }, | 1201 }, |
| 1176 'memory:chrome:all_processes:dump_count:light': { | 1202 'memory:chrome:all_processes:dump_count:light': { |
| 1177 value: 1, | 1203 value: 1, |
| 1178 unit: unitlessNumber_smallerIsBetter, | 1204 unit: unitlessNumber_smallerIsBetter, |
| 1179 description: 'total number of light memory dumps added by Chrome to ' + | 1205 description: 'total number of light memory dumps added by Chrome to ' + |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1357 memoryMetricTest('combined_multipleBrowsers', function(model) { | 1383 memoryMetricTest('combined_multipleBrowsers', function(model) { |
| 1358 var pWebView = createWebViewProcess(model); | 1384 var pWebView = createWebViewProcess(model); |
| 1359 var pChrome1 = createChromeBrowserProcess(model); | 1385 var pChrome1 = createChromeBrowserProcess(model); |
| 1360 var pRenderer1 = createProcessWithName(model, 'Renderer'); | 1386 var pRenderer1 = createProcessWithName(model, 'Renderer'); |
| 1361 var pGpu1 = createProcessWithName(model, 'GPU Process'); | 1387 var pGpu1 = createProcessWithName(model, 'GPU Process'); |
| 1362 var pUnknownBrowser = createProcessWithName(model, 'Browser'); | 1388 var pUnknownBrowser = createProcessWithName(model, 'Browser'); |
| 1363 var pChrome2 = createChromeBrowserProcess(model); | 1389 var pChrome2 = createChromeBrowserProcess(model); |
| 1364 var pRenderer2 = createProcessWithName(model, 'Renderer'); | 1390 var pRenderer2 = createProcessWithName(model, 'Renderer'); |
| 1365 | 1391 |
| 1366 // Timestamp 1 (WebView). | 1392 // Timestamp 1 (WebView). |
| 1367 var gmd1 = addGlobalMemoryDump(model, 0, LIGHT); | 1393 var gmd1 = addGlobalMemoryDump(model, {ts: 0, levelOfDetail: LIGHT}); |
| 1368 var pmdBrowser1 = addProcessMemoryDump(gmd1, pWebView, 0); | 1394 var pmdBrowser1 = addProcessMemoryDump(gmd1, pWebView, {ts: 0}); |
| 1369 pmdBrowser1.memoryAllocatorDumps = [ | 1395 pmdBrowser1.memoryAllocatorDumps = [ |
| 1370 newAllocatorDump(pmdBrowser1, 'malloc', { size: 2 }), | 1396 newAllocatorDump(pmdBrowser1, 'malloc', {numerics: {size: 2}}), |
| 1371 newAllocatorDump(pmdBrowser1, 'v8', { size: 4 }) | 1397 newAllocatorDump(pmdBrowser1, 'v8', {numerics: {size: 4}}) |
| 1372 ]; | 1398 ]; |
| 1373 | 1399 |
| 1374 // Timestamp 2 (Chrome 1 + Renderer + GPU Process). | 1400 // Timestamp 2 (Chrome 1 + Renderer + GPU Process). |
| 1375 var gmd2 = addGlobalMemoryDump(model, 10, DETAILED); | 1401 var gmd2 = addGlobalMemoryDump(model, {ts: 10, levelOfDetail: DETAILED}); |
| 1376 var pmdBrowser2 = addProcessMemoryDump(gmd2, pChrome1, 12); | 1402 var pmdBrowser2 = addProcessMemoryDump(gmd2, pChrome1, {ts: 12}); |
| 1377 pmdBrowser2.vmRegions = VMRegionClassificationNode.fromRegions([ | 1403 pmdBrowser2.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 1378 new VMRegion(0xABCD, 9999, 0, '/dev/ashmem/dalvik-non moving space', | 1404 new VMRegion(0xABCD, 9999, 0, '/dev/ashmem/dalvik-non moving space', |
| 1379 { 'privateDirtyResident': 8 }) | 1405 {privateDirtyResident: 8}) |
| 1380 ]); | 1406 ]); |
| 1381 var pmdGpu2 = addProcessMemoryDump(gmd2, pGpu1, 8); | 1407 var pmdGpu2 = addProcessMemoryDump(gmd2, pGpu1, {ts: 8}); |
| 1382 pmdGpu2.vmRegions = VMRegionClassificationNode.fromRegions([ | 1408 pmdGpu2.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 1383 new VMRegion(0xABCD, 9999, 0, '/dev/ashmem/dalvik-non moving space', | 1409 new VMRegion(0xABCD, 9999, 0, '/dev/ashmem/dalvik-non moving space', |
| 1384 { 'privateDirtyResident': 16 }) | 1410 {privateDirtyResident: 16}) |
| 1385 ]); | 1411 ]); |
| 1386 var pmdRenderer2 = addProcessMemoryDump(gmd2, pRenderer1, 8); | 1412 var pmdRenderer2 = addProcessMemoryDump(gmd2, pRenderer1, {ts: 8}); |
| 1387 pmdRenderer2.memoryAllocatorDumps = [ | 1413 pmdRenderer2.memoryAllocatorDumps = [ |
| 1388 newAllocatorDump(pmdBrowser2, 'malloc', { size: 32 }) | 1414 newAllocatorDump(pmdBrowser2, 'malloc', {numerics: {size: 32}}) |
| 1389 ]; | 1415 ]; |
| 1390 | 1416 |
| 1391 // Timestamp 3 (Chrome 2). | 1417 // Timestamp 3 (Chrome 2). |
| 1392 var gmd3 = addGlobalMemoryDump(model, 20, DETAILED); | 1418 var gmd3 = addGlobalMemoryDump(model, {ts: 20, levelOfDetail: DETAILED}); |
| 1393 var pmdBrowser3 = addProcessMemoryDump(gmd3, pChrome2, 20); | 1419 var pmdBrowser3 = addProcessMemoryDump(gmd3, pChrome2, {ts: 20}); |
| 1394 pmdBrowser3.memoryAllocatorDumps = [ | 1420 pmdBrowser3.memoryAllocatorDumps = [ |
| 1395 newAllocatorDump(pmdBrowser3, 'malloc', { size: 64 }), | 1421 newAllocatorDump(pmdBrowser3, 'malloc', {numerics: {size: 64}}), |
| 1396 newAllocatorDump(pmdBrowser3, 'sqlite', { size: 128 }), | 1422 newAllocatorDump(pmdBrowser3, 'sqlite', {numerics: {size: 128}}), |
| 1397 newAllocatorDump(pmdBrowser3, 'discardable', { | 1423 newAllocatorDump(pmdBrowser3, 'discardable', {numerics: { |
| 1398 size: 8388608, | 1424 size: 8388608, |
| 1399 locked_size: 4194304 | 1425 locked_size: 4194304 |
| 1400 }) | 1426 }}) |
| 1401 ]; | 1427 ]; |
| 1402 pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([ | 1428 pmdBrowser3.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 1403 new VMRegion(0xABCD, 99, 0, '/dev/ashmem/dalvik-non moving space', | 1429 new VMRegion(0xABCD, 99, 0, '/dev/ashmem/dalvik-non moving space', |
| 1404 { 'privateDirtyResident': 256 }) | 1430 {privateDirtyResident: 256}) |
| 1405 ]); | 1431 ]); |
| 1406 | 1432 |
| 1407 // Timestamp 4 (Chrome 2 + Renderer). | 1433 // Timestamp 4 (Chrome 2 + Renderer). |
| 1408 var gmd4 = addGlobalMemoryDump(model, 30, LIGHT); | 1434 var gmd4 = addGlobalMemoryDump(model, {ts: 30, levelOfDetail: LIGHT}); |
| 1409 var pmdBrowser4 = addProcessMemoryDump(gmd4, pChrome2, 28); | 1435 var pmdBrowser4 = addProcessMemoryDump(gmd4, pChrome2, {ts: 28}); |
| 1410 pmdBrowser4.memoryAllocatorDumps = [ | 1436 pmdBrowser4.memoryAllocatorDumps = [ |
| 1411 newAllocatorDump(pmdBrowser4, 'malloc', { size: 512 }), | 1437 newAllocatorDump(pmdBrowser4, 'malloc', {numerics: {size: 512}}), |
| 1412 newAllocatorDump(pmdBrowser3, 'discardable', { size: 16777216 }) | 1438 newAllocatorDump(pmdBrowser3, 'discardable', {numerics: {size: 16777216}}) |
| 1413 ]; | 1439 ]; |
| 1414 var pmdRenderer4 = addProcessMemoryDump(gmd4, pRenderer2, 32); | 1440 var pmdRenderer4 = addProcessMemoryDump(gmd4, pRenderer2, {ts: 32}); |
| 1415 pmdRenderer4.memoryAllocatorDumps = [ | 1441 pmdRenderer4.memoryAllocatorDumps = [ |
| 1416 newAllocatorDump(pmdRenderer4, 'malloc', { size: 1024 }), | 1442 newAllocatorDump(pmdRenderer4, 'malloc', {numerics: {size: 1024}}), |
| 1417 newAllocatorDump(pmdRenderer4, 'v8', { size: 2048 }) | 1443 newAllocatorDump(pmdRenderer4, 'v8', {numerics: {size: 2048}}) |
| 1418 ]; | 1444 ]; |
| 1419 | 1445 |
| 1420 // Timestamp 5 (Unknown browser). | 1446 // Timestamp 5 (Unknown browser). |
| 1421 var gmd5 = addGlobalMemoryDump(model, 40, LIGHT); | 1447 var gmd5 = addGlobalMemoryDump(model, {ts: 40, levelOfDetail: LIGHT}); |
| 1422 var pmdBrowser5 = addProcessMemoryDump(gmd5, pUnknownBrowser, 40); | 1448 var pmdBrowser5 = addProcessMemoryDump(gmd5, pUnknownBrowser, {ts: 40}); |
| 1423 pmdBrowser5.memoryAllocatorDumps = [ | 1449 pmdBrowser5.memoryAllocatorDumps = [ |
| 1424 newAllocatorDump(pmdBrowser5, 'malloc', { size: 4096 }), | 1450 newAllocatorDump(pmdBrowser5, 'malloc', {numerics: {size: 4096}}), |
| 1425 newAllocatorDump(pmdBrowser5, 'sqlite', { size: 8192 }), | 1451 newAllocatorDump(pmdBrowser5, 'sqlite', {numerics: {size: 8192}}), |
| 1426 ]; | 1452 ]; |
| 1427 | 1453 |
| 1428 // Timestamp 6 (WebView). | 1454 // Timestamp 6 (WebView). |
| 1429 var gmd6 = addGlobalMemoryDump(model, 50, DETAILED); | 1455 var gmd6 = addGlobalMemoryDump(model, {ts: 50, levelOfDetail: DETAILED}); |
| 1430 var pmdBrowser6 = addProcessMemoryDump(gmd6, pWebView, 50); | 1456 var pmdBrowser6 = addProcessMemoryDump(gmd6, pWebView, {ts: 50}); |
| 1431 pmdBrowser6.memoryAllocatorDumps = [ | 1457 pmdBrowser6.memoryAllocatorDumps = (function() { |
| 1432 newAllocatorDump(pmdBrowser6, 'malloc', { size: 16384 }), | 1458 var mallocDump = newAllocatorDump(pmdBrowser6, 'malloc', |
| 1433 newAllocatorDump(pmdBrowser6, 'v8', { | 1459 {numerics: {size: 16384}}); |
| 1434 'allocated_objects_size': 32768, | 1460 var v8Dump = newAllocatorDump(pmdBrowser6, 'v8', {numerics: { |
| 1435 'code_and_metadata_size': 33554432, | 1461 allocated_objects_size: 32768, |
| 1436 'size': 67108864 | 1462 code_and_metadata_size: 33554432, |
| 1437 }) | 1463 size: 67108864 |
| 1438 ]; | 1464 }}); |
| 1465 var isolateDump = addChildDump(v8Dump, 'isolate'); |
| 1466 addChildDump(isolateDump, 'malloc', {numerics: {size: 1 }}); |
| 1467 return [mallocDump, v8Dump]; |
| 1468 })(); |
| 1439 pmdBrowser6.vmRegions = VMRegionClassificationNode.fromRegions([ | 1469 pmdBrowser6.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 1440 new VMRegion(0xABCD, 99999, 0, '/dev/ashmem/dalvik-non moving space', | 1470 new VMRegion(0xABCD, 99999, 0, '/dev/ashmem/dalvik-non moving space', |
| 1441 { 'privateDirtyResident': 65536 }) | 1471 {privateDirtyResident: 65536}) |
| 1442 ]); | 1472 ]); |
| 1443 | 1473 |
| 1444 // Timestamp 7 (Chrome 1 + GPU Process). | 1474 // Timestamp 7 (Chrome 1 + GPU Process). |
| 1445 var gmd7 = addGlobalMemoryDump(model, 60, DETAILED); | 1475 var gmd7 = addGlobalMemoryDump(model, {ts: 60, levelOfDetail: DETAILED}); |
| 1446 var pmdBrowser7 = addProcessMemoryDump(gmd7, pChrome1, 63); | 1476 var pmdBrowser7 = addProcessMemoryDump(gmd7, pChrome1, {ts: 63}); |
| 1447 pmdBrowser7.memoryAllocatorDumps = [ | 1477 pmdBrowser7.memoryAllocatorDumps = [ |
| 1448 newAllocatorDump(pmdBrowser4, 'malloc', { size: 131072 }), | 1478 newAllocatorDump(pmdBrowser4, 'malloc', {numerics: {size: 131072}}), |
| 1449 newAllocatorDump(pmdBrowser4, 'sqlite', { size: 262144 }) | 1479 newAllocatorDump(pmdBrowser4, 'sqlite', {numerics: {size: 262144}}) |
| 1450 ]; | 1480 ]; |
| 1451 pmdBrowser7.vmRegions = VMRegionClassificationNode.fromRegions([ | 1481 pmdBrowser7.vmRegions = VMRegionClassificationNode.fromRegions([ |
| 1452 new VMRegion(0xABCD, 999999, 0, '/dev/ashmem/dalvik-non moving space', | 1482 new VMRegion(0xABCD, 999999, 0, '/dev/ashmem/dalvik-non moving space', |
| 1453 { 'privateDirtyResident': 524288 }) | 1483 {privateDirtyResident: 524288}) |
| 1454 ]); | 1484 ]); |
| 1455 var pmdGpu7 = addProcessMemoryDump(gmd7, pGpu1, 57); | 1485 var pmdGpu7 = addProcessMemoryDump(gmd7, pGpu1, {ts: 57}); |
| 1456 pmdGpu7.memoryAllocatorDumps = (function() { | 1486 pmdGpu7.memoryAllocatorDumps = (function() { |
| 1457 var gpuDump = newAllocatorDump(pmdGpu7, 'gpu', { 'size': 1048576 }); | 1487 var gpuDump = newAllocatorDump(pmdGpu7, 'gpu', |
| 1488 {numerics: {size: 1048576}}); |
| 1458 var memtrackDump = addChildDump(gpuDump, 'android_memtrack'); | 1489 var memtrackDump = addChildDump(gpuDump, 'android_memtrack'); |
| 1459 addChildDump(memtrackDump, 'gl', { 'memtrack_pss': 2097152 }); | 1490 addChildDump(memtrackDump, 'gl', {numerics: {memtrack_pss: 2097152}}); |
| 1460 return [gpuDump]; | 1491 return [gpuDump]; |
| 1461 })(); | 1492 })(); |
| 1462 }, { | 1493 }, undefined /* opt_options */, { |
| 1463 // WebView (GMD1, GMD6). | 1494 // WebView (GMD1, GMD6). |
| 1464 'memory:webview:all_processes:dump_count:detailed': { | 1495 'memory:webview:all_processes:dump_count:detailed': { |
| 1465 value: 1, | 1496 value: 1, |
| 1466 unit: unitlessNumber_smallerIsBetter, | 1497 unit: unitlessNumber_smallerIsBetter, |
| 1467 description: 'total number of detailed memory dumps added by WebView ' + | 1498 description: 'total number of detailed memory dumps added by WebView ' + |
| 1468 'to the trace' | 1499 'to the trace' |
| 1469 }, | 1500 }, |
| 1470 'memory:webview:all_processes:dump_count:light': { | 1501 'memory:webview:all_processes:dump_count:light': { |
| 1471 value: 1, | 1502 value: 1, |
| 1472 unit: unitlessNumber_smallerIsBetter, | 1503 unit: unitlessNumber_smallerIsBetter, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1500 value: [0, 32768], | 1531 value: [0, 32768], |
| 1501 unit: sizeInBytes_smallerIsBetter, | 1532 unit: sizeInBytes_smallerIsBetter, |
| 1502 description: 'total size of all allocated objects reported by Chrome ' + | 1533 description: 'total size of all allocated objects reported by Chrome ' + |
| 1503 'for all processes in WebView' | 1534 'for all processes in WebView' |
| 1504 }, | 1535 }, |
| 1505 'memory:webview:all_processes:reported_by_chrome:malloc:effective_size': { | 1536 'memory:webview:all_processes:reported_by_chrome:malloc:effective_size': { |
| 1506 value: [2, 16384], | 1537 value: [2, 16384], |
| 1507 unit: sizeInBytes_smallerIsBetter, | 1538 unit: sizeInBytes_smallerIsBetter, |
| 1508 description: 'effective size of malloc in all processes in WebView' | 1539 description: 'effective size of malloc in all processes in WebView' |
| 1509 }, | 1540 }, |
| 1541 'memory:webview:all_processes:reported_by_chrome:v8:allocated_by_malloc:effe
ctive_size': |
| 1542 { |
| 1543 value: [0, 1], |
| 1544 unit: sizeInBytes_smallerIsBetter, |
| 1545 description: 'effective size of objects allocated by malloc for v8 ' + |
| 1546 'in all processes in WebView' |
| 1547 }, |
| 1510 'memory:webview:all_processes:reported_by_chrome:v8:effective_size': { | 1548 'memory:webview:all_processes:reported_by_chrome:v8:effective_size': { |
| 1511 value: [4, 67108864], | 1549 value: [4, 67108864], |
| 1512 unit: sizeInBytes_smallerIsBetter, | 1550 unit: sizeInBytes_smallerIsBetter, |
| 1513 description: 'effective size of v8 in all processes in WebView' | 1551 description: 'effective size of v8 in all processes in WebView' |
| 1514 }, | 1552 }, |
| 1515 'memory:webview:all_processes:reported_by_chrome:v8:code_and_metadata_size': | 1553 'memory:webview:all_processes:reported_by_chrome:v8:code_and_metadata_size': |
| 1516 { | 1554 { |
| 1517 value: [33554432], | 1555 value: [33554432], |
| 1518 unit: sizeInBytes_smallerIsBetter, | 1556 unit: sizeInBytes_smallerIsBetter, |
| 1519 description: 'size of v8 code and metadata in all processes in ' + | 1557 description: 'size of v8 code and metadata in all processes in ' + |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1617 value: [33554432], | 1655 value: [33554432], |
| 1618 unit: sizeInBytes_smallerIsBetter, | 1656 unit: sizeInBytes_smallerIsBetter, |
| 1619 description: 'total size of code and metadata reported by Chrome ' + | 1657 description: 'total size of code and metadata reported by Chrome ' + |
| 1620 'for the browser process in WebView' | 1658 'for the browser process in WebView' |
| 1621 }, | 1659 }, |
| 1622 'memory:webview:browser_process:reported_by_chrome:malloc:effective_size': { | 1660 'memory:webview:browser_process:reported_by_chrome:malloc:effective_size': { |
| 1623 value: [2, 16384], | 1661 value: [2, 16384], |
| 1624 unit: sizeInBytes_smallerIsBetter, | 1662 unit: sizeInBytes_smallerIsBetter, |
| 1625 description: 'effective size of malloc in the browser process in WebView' | 1663 description: 'effective size of malloc in the browser process in WebView' |
| 1626 }, | 1664 }, |
| 1665 'memory:webview:browser_process:reported_by_chrome:v8:allocated_by_malloc:ef
fective_size': |
| 1666 { |
| 1667 value: [0, 1], |
| 1668 unit: sizeInBytes_smallerIsBetter, |
| 1669 description: 'effective size of objects allocated by malloc for v8 ' + |
| 1670 'in the browser process in WebView' |
| 1671 }, |
| 1627 'memory:webview:browser_process:reported_by_chrome:v8:effective_size': { | 1672 'memory:webview:browser_process:reported_by_chrome:v8:effective_size': { |
| 1628 value: [4, 67108864], | 1673 value: [4, 67108864], |
| 1629 unit: sizeInBytes_smallerIsBetter, | 1674 unit: sizeInBytes_smallerIsBetter, |
| 1630 description: 'effective size of v8 in the browser process in WebView' | 1675 description: 'effective size of v8 in the browser process in WebView' |
| 1631 }, | 1676 }, |
| 1632 'memory:webview:browser_process:reported_by_chrome:v8:allocated_objects_size
': | 1677 'memory:webview:browser_process:reported_by_chrome:v8:allocated_objects_size
': |
| 1633 { | 1678 { |
| 1634 value: [0, 32768], | 1679 value: [0, 32768], |
| 1635 unit: sizeInBytes_smallerIsBetter, | 1680 unit: sizeInBytes_smallerIsBetter, |
| 1636 description: 'size of all objects allocated by v8 in the browser ' + | 1681 description: 'size of all objects allocated by v8 in the browser ' + |
| (...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2447 }, | 2492 }, |
| 2448 'memory:unknown_browser:browser_process:reported_by_chrome:sqlite:effective_
size': | 2493 'memory:unknown_browser:browser_process:reported_by_chrome:sqlite:effective_
size': |
| 2449 { | 2494 { |
| 2450 value: [8192], | 2495 value: [8192], |
| 2451 unit: sizeInBytes_smallerIsBetter, | 2496 unit: sizeInBytes_smallerIsBetter, |
| 2452 description: 'effective size of sqlite in the browser process in ' + | 2497 description: 'effective size of sqlite in the browser process in ' + |
| 2453 'an unknown browser' | 2498 'an unknown browser' |
| 2454 } | 2499 } |
| 2455 }); | 2500 }); |
| 2456 | 2501 |
| 2502 memoryMetricTest('rangeOfInterest', function(model) { |
| 2503 var pChrome = createChromeBrowserProcess(model); |
| 2504 var pWebView = createWebViewProcess(model); |
| 2505 |
| 2506 // Chrome: only the LIGHT dumps should be kept. |
| 2507 addProcessMemoryDump(addGlobalMemoryDump( |
| 2508 model, {ts: 5, duration: 4, levelOfDetail: DETAILED}), pChrome); |
| 2509 addProcessMemoryDump(addGlobalMemoryDump( |
| 2510 model, {ts: 10, duration: 2, levelOfDetail: LIGHT}), pChrome); |
| 2511 addProcessMemoryDump(addGlobalMemoryDump( |
| 2512 model, {ts: 13, duration: 3, levelOfDetail: LIGHT}), pChrome); |
| 2513 addProcessMemoryDump(addGlobalMemoryDump( |
| 2514 model, {ts: 20, duration: 1, levelOfDetail: LIGHT}), pChrome); |
| 2515 addProcessMemoryDump(addGlobalMemoryDump( |
| 2516 model, {ts: 22, duration: 5, levelOfDetail: DETAILED}), pChrome); |
| 2517 |
| 2518 // WebView: only the DETAILED dumps should be kept. |
| 2519 addProcessMemoryDump(addGlobalMemoryDump( |
| 2520 model, {ts: 4, duration: 1, levelOfDetail: LIGHT}), pWebView); |
| 2521 addProcessMemoryDump(addGlobalMemoryDump( |
| 2522 model, {ts: 5, duration: 5, levelOfDetail: DETAILED}), pWebView); |
| 2523 addProcessMemoryDump(addGlobalMemoryDump( |
| 2524 model, {ts: 10, duration: 0, levelOfDetail: DETAILED}), pWebView); |
| 2525 addProcessMemoryDump(addGlobalMemoryDump( |
| 2526 model, {ts: 11, duration: 7, levelOfDetail: DETAILED}), pWebView); |
| 2527 addProcessMemoryDump(addGlobalMemoryDump( |
| 2528 model, {ts: 19, duration: 2, levelOfDetail: DETAILED}), pWebView); |
| 2529 addProcessMemoryDump(addGlobalMemoryDump( |
| 2530 model, {ts: 21, duration: 5, levelOfDetail: LIGHT}), pWebView); |
| 2531 |
| 2532 // Unknown browser: only the LIGHT dump should be kept. |
| 2533 addGlobalMemoryDump(model, {ts: 5, duration: 3, levelOfDetail: DETAILED}); |
| 2534 addGlobalMemoryDump(model, {ts: 9, duration: 12, levelOfDetail: LIGHT}); |
| 2535 addGlobalMemoryDump(model, {ts: 22, duration: 3, levelOfDetail: DETAILED}); |
| 2536 }, { /* opt_options */ |
| 2537 rangeOfInterest: tr.b.Range.fromExplicitRange(10, 20) |
| 2538 }, { |
| 2539 'memory:chrome:all_processes:dump_count': { |
| 2540 value: 3, |
| 2541 unit: unitlessNumber_smallerIsBetter, |
| 2542 description: 'total number of all memory dumps added by Chrome to the ' + |
| 2543 'trace' |
| 2544 }, |
| 2545 'memory:chrome:all_processes:dump_count:detailed': { |
| 2546 value: 0, |
| 2547 unit: unitlessNumber_smallerIsBetter, |
| 2548 description: 'total number of detailed memory dumps added by Chrome to ' + |
| 2549 'the trace' |
| 2550 }, |
| 2551 'memory:chrome:all_processes:dump_count:light': { |
| 2552 value: 3, |
| 2553 unit: unitlessNumber_smallerIsBetter, |
| 2554 description: 'total number of light memory dumps added by Chrome to ' + |
| 2555 'the trace' |
| 2556 }, |
| 2557 'memory:chrome:all_processes:process_count': { |
| 2558 value: [1, 1, 1], |
| 2559 unit: unitlessNumber_smallerIsBetter, |
| 2560 description: 'total number of all processes in Chrome' |
| 2561 }, |
| 2562 'memory:chrome:browser_process:process_count': { |
| 2563 value: [1, 1, 1], |
| 2564 unit: unitlessNumber_smallerIsBetter, |
| 2565 description: 'total number of browser processes in Chrome' |
| 2566 }, |
| 2567 |
| 2568 'memory:webview:all_processes:dump_count': { |
| 2569 value: 4, |
| 2570 unit: unitlessNumber_smallerIsBetter, |
| 2571 description: 'total number of all memory dumps added by WebView to the ' + |
| 2572 'trace' |
| 2573 }, |
| 2574 'memory:webview:all_processes:dump_count:detailed': { |
| 2575 value: 4, |
| 2576 unit: unitlessNumber_smallerIsBetter, |
| 2577 description: 'total number of detailed memory dumps added by WebView ' + |
| 2578 'to the trace' |
| 2579 }, |
| 2580 'memory:webview:all_processes:dump_count:light': { |
| 2581 value: 0, |
| 2582 unit: unitlessNumber_smallerIsBetter, |
| 2583 description: 'total number of light memory dumps added by WebView to ' + |
| 2584 'the trace' |
| 2585 }, |
| 2586 'memory:webview:all_processes:process_count': { |
| 2587 value: [1, 1, 1, 1], |
| 2588 unit: unitlessNumber_smallerIsBetter, |
| 2589 description: 'total number of all processes in WebView' |
| 2590 }, |
| 2591 'memory:webview:all_processes:reported_by_os:private_dirty_size': { |
| 2592 value: [0, 0, 0, 0], |
| 2593 unit: sizeInBytes_smallerIsBetter, |
| 2594 description: 'total private dirty size reported by the OS for all ' + |
| 2595 'processes in WebView' |
| 2596 }, |
| 2597 'memory:webview:all_processes:reported_by_os:proportional_resident_size': { |
| 2598 value: [0, 0, 0, 0], |
| 2599 unit: sizeInBytes_smallerIsBetter, |
| 2600 description: 'total proportional resident size (PSS) reported by the ' + |
| 2601 'OS for all processes in WebView' |
| 2602 }, |
| 2603 'memory:webview:all_processes:reported_by_os:system_memory:ashmem:private_di
rty_size': |
| 2604 { |
| 2605 value: [0, 0, 0, 0], |
| 2606 unit: sizeInBytes_smallerIsBetter, |
| 2607 description: 'private dirty size of ashmem in all processes in ' + |
| 2608 'WebView' |
| 2609 }, |
| 2610 'memory:webview:all_processes:reported_by_os:system_memory:ashmem:proportion
al_resident_size': |
| 2611 { |
| 2612 value: [0, 0, 0, 0], |
| 2613 unit: sizeInBytes_smallerIsBetter, |
| 2614 description: 'proportional resident size (PSS) of ashmem in all ' + |
| 2615 'processes in WebView' |
| 2616 }, |
| 2617 'memory:webview:all_processes:reported_by_os:system_memory:java_heap:private
_dirty_size': |
| 2618 { |
| 2619 value: [0, 0, 0, 0], |
| 2620 unit: sizeInBytes_smallerIsBetter, |
| 2621 description: 'private dirty size of the Java heap in all processes ' + |
| 2622 'in WebView' |
| 2623 }, |
| 2624 'memory:webview:all_processes:reported_by_os:system_memory:java_heap:proport
ional_resident_size': |
| 2625 { |
| 2626 value: [0, 0, 0, 0], |
| 2627 unit: sizeInBytes_smallerIsBetter, |
| 2628 description: 'proportional resident size (PSS) of the Java heap in ' + |
| 2629 'all processes in WebView' |
| 2630 }, |
| 2631 'memory:webview:all_processes:reported_by_os:system_memory:native_heap:priva
te_dirty_size': |
| 2632 { |
| 2633 value: [0, 0, 0, 0], |
| 2634 unit: sizeInBytes_smallerIsBetter, |
| 2635 description: 'private dirty size of the native heap in all ' + |
| 2636 'processes in WebView' |
| 2637 }, |
| 2638 'memory:webview:all_processes:reported_by_os:system_memory:native_heap:propo
rtional_resident_size': |
| 2639 { |
| 2640 value: [0, 0, 0, 0], |
| 2641 unit: sizeInBytes_smallerIsBetter, |
| 2642 description: 'proportional resident size (PSS) of the native heap ' + |
| 2643 'in all processes in WebView' |
| 2644 }, |
| 2645 'memory:webview:all_processes:reported_by_os:system_memory:private_dirty_siz
e': |
| 2646 { |
| 2647 value: [0, 0, 0, 0], |
| 2648 unit: sizeInBytes_smallerIsBetter, |
| 2649 description: 'total private dirty size of system memory (RAM) used ' + |
| 2650 'by all processes in WebView' |
| 2651 }, |
| 2652 'memory:webview:all_processes:reported_by_os:system_memory:proportional_resi
dent_size': |
| 2653 { |
| 2654 value: [0, 0, 0, 0], |
| 2655 unit: sizeInBytes_smallerIsBetter, |
| 2656 description: 'total proportional resident size (PSS) of system ' + |
| 2657 'memory (RAM) used by all processes in WebView' |
| 2658 }, |
| 2659 'memory:webview:browser_process:process_count': { |
| 2660 value: [1, 1, 1, 1], |
| 2661 unit: unitlessNumber_smallerIsBetter, |
| 2662 description: 'total number of browser processes in WebView' |
| 2663 }, |
| 2664 'memory:webview:browser_process:reported_by_os:private_dirty_size': { |
| 2665 value: [0, 0, 0, 0], |
| 2666 unit: sizeInBytes_smallerIsBetter, |
| 2667 description: 'total private dirty size reported by the OS for the ' + |
| 2668 'browser process in WebView' |
| 2669 }, |
| 2670 'memory:webview:browser_process:reported_by_os:proportional_resident_size': |
| 2671 { |
| 2672 value: [0, 0, 0, 0], |
| 2673 unit: sizeInBytes_smallerIsBetter, |
| 2674 description: 'total proportional resident size (PSS) reported by ' + |
| 2675 'the OS for the browser process in WebView' |
| 2676 }, |
| 2677 'memory:webview:browser_process:reported_by_os:system_memory:ashmem:private_
dirty_size': |
| 2678 { |
| 2679 value: [0, 0, 0, 0], |
| 2680 unit: sizeInBytes_smallerIsBetter, |
| 2681 description: 'private dirty size of ashmem in the browser process ' + |
| 2682 'in WebView' |
| 2683 }, |
| 2684 'memory:webview:browser_process:reported_by_os:system_memory:ashmem:proporti
onal_resident_size': |
| 2685 { |
| 2686 value: [0, 0, 0, 0], |
| 2687 unit: sizeInBytes_smallerIsBetter, |
| 2688 description: 'proportional resident size (PSS) of ashmem in the ' + |
| 2689 'browser process in WebView' |
| 2690 }, |
| 2691 'memory:webview:browser_process:reported_by_os:system_memory:java_heap:priva
te_dirty_size': |
| 2692 { |
| 2693 value: [0, 0, 0, 0], |
| 2694 unit: sizeInBytes_smallerIsBetter, |
| 2695 description: 'private dirty size of the Java heap in the browser ' + |
| 2696 'process in WebView' |
| 2697 }, |
| 2698 'memory:webview:browser_process:reported_by_os:system_memory:java_heap:propo
rtional_resident_size': |
| 2699 { |
| 2700 value: [0, 0, 0, 0], |
| 2701 unit: sizeInBytes_smallerIsBetter, |
| 2702 description: 'proportional resident size (PSS) of the Java heap in ' + |
| 2703 'the browser process in WebView' |
| 2704 }, |
| 2705 'memory:webview:browser_process:reported_by_os:system_memory:native_heap:pri
vate_dirty_size': |
| 2706 { |
| 2707 value: [0, 0, 0, 0], |
| 2708 unit: sizeInBytes_smallerIsBetter, |
| 2709 description: 'private dirty size of the native heap in the browser ' + |
| 2710 'process in WebView' |
| 2711 }, |
| 2712 'memory:webview:browser_process:reported_by_os:system_memory:native_heap:pro
portional_resident_size': |
| 2713 { |
| 2714 value: [0, 0, 0, 0], |
| 2715 unit: sizeInBytes_smallerIsBetter, |
| 2716 description: 'proportional resident size (PSS) of the native heap ' + |
| 2717 'in the browser process in WebView' |
| 2718 }, |
| 2719 'memory:webview:browser_process:reported_by_os:system_memory:private_dirty_s
ize': |
| 2720 { |
| 2721 value: [0, 0, 0, 0], |
| 2722 unit: sizeInBytes_smallerIsBetter, |
| 2723 description: 'total private dirty size of system memory (RAM) used ' + |
| 2724 'by the browser process in WebView' |
| 2725 }, |
| 2726 'memory:webview:browser_process:reported_by_os:system_memory:proportional_re
sident_size': |
| 2727 { |
| 2728 value: [0, 0, 0, 0], |
| 2729 unit: sizeInBytes_smallerIsBetter, |
| 2730 description: 'total proportional resident size (PSS) of system ' + |
| 2731 'memory (RAM) used by the browser process in WebView' |
| 2732 }, |
| 2733 |
| 2734 'memory:unknown_browser:all_processes:dump_count': { |
| 2735 value: 1, |
| 2736 unit: unitlessNumber_smallerIsBetter, |
| 2737 description: 'total number of all memory dumps added by an unknown ' + |
| 2738 'browser to the trace' |
| 2739 }, |
| 2740 'memory:unknown_browser:all_processes:dump_count:detailed': { |
| 2741 value: 0, |
| 2742 unit: unitlessNumber_smallerIsBetter, |
| 2743 description: 'total number of detailed memory dumps added by an ' + |
| 2744 'unknown browser to the trace' |
| 2745 }, |
| 2746 'memory:unknown_browser:all_processes:dump_count:light': { |
| 2747 value: 1, |
| 2748 unit: unitlessNumber_smallerIsBetter, |
| 2749 description: 'total number of light memory dumps added by an unknown ' + |
| 2750 'browser to the trace' |
| 2751 } |
| 2752 }); |
| 2753 |
| 2457 test('dumpIdBrowserClashThrows', function() { | 2754 test('dumpIdBrowserClashThrows', function() { |
| 2458 var model = tr.c.TestUtils.newModel(function(model) { | 2755 var model = tr.c.TestUtils.newModel(function(model) { |
| 2459 var pWebView = createWebViewProcess(model); | 2756 var pWebView = createWebViewProcess(model); |
| 2460 var pChrome = createChromeBrowserProcess(model); | 2757 var pChrome = createChromeBrowserProcess(model); |
| 2461 | 2758 |
| 2462 var gmd = addGlobalMemoryDump(model, 10); | 2759 var gmd = addGlobalMemoryDump(model, {ts: 10}); |
| 2463 addProcessMemoryDump(gmd, pWebView, 9); | 2760 addProcessMemoryDump(gmd, pWebView, {ts: 9}); |
| 2464 addProcessMemoryDump(gmd, pChrome, 11); | 2761 addProcessMemoryDump(gmd, pChrome, {ts: 11}); |
| 2465 }); | 2762 }); |
| 2466 var values = new tr.v.ValueSet(); | 2763 var values = new tr.v.ValueSet(); |
| 2467 | 2764 |
| 2468 assert.throws(function() { | 2765 assert.throws(function() { |
| 2469 tr.metrics.sh.memoryMetric(values, model); | 2766 tr.metrics.sh.memoryMetric(values, model); |
| 2470 }, 'Memory dump ID clash across multiple browsers with PIDs: 1 and 2'); | 2767 }, 'Memory dump ID clash across multiple browsers with PIDs: 1 and 2'); |
| 2471 }); | 2768 }); |
| 2472 }); | 2769 }); |
| 2473 </script> | 2770 </script> |
| OLD | NEW |