Chromium Code Reviews| 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.timeline import tracing_category_filter | |
| 7 from telemetry.timeline import tracing_options | |
| 8 from telemetry.timeline.model import TimelineModel | |
| 9 from telemetry.value import scalar | |
| 10 | |
| 11 | |
| 12 class RendererMemory(page_test.PageTest): | |
| 13 def __init__(self): | |
| 14 super(RendererMemory, self).__init__() | |
| 15 | |
| 16 def WillNavigateToPage(self, page, tab): | |
| 17 category_filter = tracing_category_filter.TracingCategoryFilter( | |
| 18 '-*,blink.console,disabled-by-default-memory-infra') | |
|
petrcermak
2015/08/26 08:20:18
This should be indented 4 spaces (+2)
bashi
2015/08/26 08:57:34
Done.
| |
| 19 options = tracing_options.TracingOptions() | |
| 20 options.enable_chrome_trace = True | |
| 21 tab.browser.platform.tracing_controller.Start(options, category_filter, 10) | |
| 22 | |
| 23 def CustomizeBrowserOptions(self, options): | |
| 24 options.AppendExtraBrowserArgs( | |
| 25 ['--enable-memory-benchmarking', '--ignore-certificate-errors', | |
|
petrcermak
2015/08/26 08:20:18
This and the next line should be indented 4 spaces
bashi
2015/08/26 08:57:34
Done.
| |
| 26 '--no-sandbox']) | |
| 27 | |
| 28 def CleanUpAfterPage(self, _, tab): | |
| 29 if tab.browser.platform.tracing_controller.is_tracing_running: | |
| 30 tab.browser.platform.tracing_controller.Stop() | |
| 31 | |
| 32 def ValidateAndMeasurePage(self, _, tab, results): | |
| 33 assert tab.browser.supports_memory_dumping | |
|
petrcermak
2015/08/26 08:20:18
Any chance this could be replaced with a decorator
bashi
2015/08/26 08:57:34
I didn't know that. Thanks! Done.
| |
| 34 guid = tab.browser.DumpMemory() | |
| 35 timeline_data = tab.browser.platform.tracing_controller.Stop() | |
| 36 timeline_model = TimelineModel(timeline_data) | |
| 37 assert guid is not None | |
|
petrcermak
2015/08/26 08:20:18
No reason not to put this right after line 34.
bashi
2015/08/26 08:57:34
Done.
| |
| 38 renderer_process = timeline_model.GetRendererProcessFromTabId(tab.id) | |
| 39 assert renderer_process is not None | |
| 40 dump = self._FindRendererDump( | |
| 41 timeline_model, guid, renderer_process.pid) | |
|
petrcermak
2015/08/26 08:20:18
This should be indented 4 spaces (+2)
bashi
2015/08/26 08:57:34
Done.
| |
| 42 self._AddAllocatorResults(dump, results) | |
| 43 | |
| 44 def _FindRendererDump(self, timeline_model, guid, pid): | |
| 45 memory_dumps = list(timeline_model.IterGlobalMemoryDumps()) | |
| 46 assert len(memory_dumps) == 1 | |
| 47 assert memory_dumps[0].dump_id == guid | |
| 48 renderer_dumps = [ | |
| 49 dump for dump in memory_dumps[0].IterProcessMemoryDumps() | |
|
petrcermak
2015/08/26 08:20:18
This and the next line should be indented 4 spaces
bashi
2015/08/26 08:57:34
Done.
| |
| 50 if dump.process.pid == pid] | |
| 51 assert len(renderer_dumps) == 1 | |
| 52 return renderer_dumps[0] | |
| 53 | |
| 54 def _AddAllocatorResults(self, dump, results): | |
| 55 usage = dump.GetMemoryUsage() | |
| 56 def _AddAllocatorStats(category): | |
|
petrcermak
2015/08/26 08:20:18
nit: I think it would be more readable if you put
bashi
2015/08/26 08:57:34
Done.
| |
| 57 results.AddValue(scalar.ScalarValue( | |
| 58 results.current_page, category, 'MiB', | |
|
petrcermak
2015/08/26 08:20:18
Lines 58-60 and also 69-71 should be indented 4 sp
bashi
2015/08/26 08:57:33
Done.
| |
| 59 float(usage.get('allocator_' + category, 0.0)) / 1024**2, | |
| 60 description='Total memory allocated by ' + category)) | |
| 61 _AddAllocatorStats('malloc') | |
| 62 _AddAllocatorStats('v8') | |
| 63 _AddAllocatorStats('blink_gc') | |
| 64 _AddAllocatorStats('partition_alloc') | |
| 65 _AddAllocatorStats('discardable') | |
| 66 | |
| 67 def _AddMMapStats(category): | |
| 68 results.AddValue(scalar.ScalarValue( | |
| 69 results.current_page, category, 'MiB', | |
| 70 float(usage.get('mmaps_' + category, 0.0)) / 1024**2, | |
| 71 description=category)) | |
| 72 _AddMMapStats('private_dirty') | |
| OLD | NEW |