OLD | NEW |
---|---|
(Empty) | |
1 # Copyright 2015 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 from telemetry.page import page_test | |
6 #from telemetry.page import action_runner | |
7 from telemetry.timeline import tracing_category_filter | |
8 from telemetry.timeline import tracing_options | |
9 from telemetry.timeline.model import TimelineModel | |
10 from telemetry.value import scalar | |
11 | |
12 | |
13 class RendererMemory(page_test.PageTest): | |
14 def __init__(self): | |
15 super(RendererMemory, self).__init__() | |
16 | |
17 def WillNavigateToPage(self, page, tab): | |
18 category_filter = tracing_category_filter.TracingCategoryFilter( | |
19 '-*,blink.console,disabled-by-default-memory-infra') | |
20 options = tracing_options.TracingOptions() | |
21 options.enable_chrome_trace = True | |
22 tab.browser.platform.tracing_controller.Start(options, category_filter, | |
23 10) | |
24 | |
25 def CustomizeBrowserOptions(self, options): | |
26 options.AppendExtraBrowserArgs(['--no-sandbox']) | |
petrcermak
2015/08/04 13:05:03
You need to add '--enable-memory-benchmarking' her
bashi
2015/08/05 09:46:30
Done.
| |
27 | |
28 def ValidateAndMeasurePage(self, page, tab, results): | |
29 assert tab.browser.supports_memory_dumping | |
30 guid = tab.browser.DumpMemory() | |
petrcermak
2015/08/04 13:05:03
I suggest you add an assert below this statement:
bashi
2015/08/05 09:46:30
Done.
| |
31 #runner = action_runner.ActionRunner(tab) | |
32 #runner.Wait(4) | |
33 timeline_data = tab.browser.platform.tracing_controller.Stop() | |
34 timeline_model = TimelineModel(timeline_data) | |
35 dump = self._FindRendererDump(timeline_model, guid) | |
36 self._AddAllocatorResults(dump, results) | |
37 | |
38 def _FindRendererDump(self, timeline_model, guid): | |
39 memory_dumps = [dump for dump in timeline_model.IterGlobalMemoryDumps() | |
40 if dump.dump_id == guid] | |
petrcermak
2015/08/04 13:05:03
You won't need to do any filtering once you disabl
bashi
2015/08/05 09:46:30
Done.
| |
41 assert len(memory_dumps) == 1 | |
bashi
2015/08/04 06:44:23
I hit this assert. How can I make sure that the re
petrcermak
2015/08/04 13:05:03
You should not need to do this (the dump should al
bashi
2015/08/05 09:46:30
Removed filtering:)
| |
42 renderer_dumps = [ | |
43 dump for dump in memory_dumps[0].IterProcessMemoryDumps() | |
44 if dump.process_name == 'Renderer'] | |
45 assert len(renderer_dumps) == 1 | |
46 return renderer_dumps[0] | |
47 | |
48 def _AddAllocatorResults(self, dump, results): | |
49 usage = dump.GetMemoryUsage() | |
50 def _AddAllocatorStats(category): | |
51 results.AddValue(scalar.ScalarValue( | |
52 results.current_page, category, 'MiB', | |
53 float(usage.get('allocator_' + category, 0.0)) / 1024**2, | |
54 description='Total memory allocated by ' + category)) | |
55 _AddAllocatorStats('malloc') | |
56 _AddAllocatorStats('v8') | |
57 _AddAllocatorStats('blink_gc') | |
58 _AddAllocatorStats('partition_alloc') | |
59 _AddAllocatorStats('discardable') | |
60 | |
61 def _AddMMapStats(category): | |
62 results.AddValue(scalar.ScalarValue( | |
63 results.current_page, category, 'MiB', | |
64 float(usage.get('mmaps_' + category, 0.0)) / 1024**2, | |
65 description=category)) | |
66 _AddMMapStats('private_dirty') | |
OLD | NEW |