Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1074)

Side by Side Diff: tools/perf/measurements/memory_infra.py

Issue 1210403002: [DoNotCommit] telemetry: Retrieve per-allocator memory usage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 # TODO(bashi): DO-NOT-FOR-COMMIT. Just for local measurements.
6
7 import logging
8
9 from telemetry.page import action_runner
10 from telemetry.page import page_test
11 from telemetry.timeline import tracing_category_filter
12 from telemetry.timeline import tracing_options
13 from telemetry.timeline.model import TimelineModel
14 from telemetry.value import scalar
15
16
17 class MemoryInfra(page_test.PageTest):
18 def __init__(self):
19 super(MemoryInfra, self).__init__()
20
21 def WillNavigateToPage(self, page, tab):
22 category_filter = tracing_category_filter.TracingCategoryFilter(
23 '-*,blink.console,disabled-by-default-memory-infra')
24 options = tracing_options.TracingOptions()
25 options.enable_chrome_trace = True
26 tab.browser.platform.tracing_controller.Start(options, category_filter,
27 10)
28 def CustomizeBrowserOptions(self, options):
29 options.AppendExtraBrowserArgs(['--no-sandbox'])
30
31 def DidNavigateToPage(self, page, tab):
32 runner = action_runner.ActionRunner(tab)
33 runner.Wait(10)
34
35 def ValidateAndMeasurePage(self, page, tab, results):
36 timeline_data = tab.browser.platform.tracing_controller.Stop()
37 timeline_model = TimelineModel(timeline_data)
38 renderer_process = timeline_model.GetRendererProcessFromTabId(tab.id)
39 latest = self._FindLatestRendererDump(timeline_model, renderer_process.pid)
40 self._AddAllocatorResults(latest, results)
41 self._AddMMapResults(latest, results)
42
43 def CleanUpAfterPage(self, page, tab):
44 if tab.browser.platform.tracing_controller.is_tracing_running:
45 tab.browser.platform.tracing_controller.Stop()
46
47 def _FindLatestRendererDump(self, timeline_model, pid):
48 """Returns the latest ProcessMemoryDumpEvent which is associated with
49 the renderer process and its |has_mmaps| is true.
50 """
51 latest = None
52 for memory_event in timeline_model.IterGlobalMemoryDumps():
53 renderer_events = filter(lambda event: event.process.pid == pid,
54 memory_event._process_dumps)
55 if len(renderer_events) == 0:
56 continue
57 assert(len(renderer_events) == 1)
58 current = renderer_events[0]
59 if current.has_mmaps and (not latest or latest.start < current.start):
60 latest = current
61 assert(latest != None)
62 return latest
63
64 def _AddAllocatorResults(self, latest, results):
65 usage = latest.GetMemoryUsage()
66 def _AddAllocatorStat(category):
67 results.AddValue(scalar.ScalarValue(
68 results.current_page, category, 'MiB',
69 float(usage.get('allocator_' + category, 0.0)) / 1024**2,
70 description='Total memoy allocated by %s' % category))
71 _AddAllocatorStat('malloc')
72 _AddAllocatorStat('v8')
73 _AddAllocatorStat('blink_gc')
74 _AddAllocatorStat('partition_alloc')
75 _AddAllocatorStat('discardable')
76 #_AddAllocatorStat('tracing')
77
78 def _AddMMapResults(self, latest, results):
79 usage = latest.GetMemoryUsage()
80 def _AddMMapStat(category):
81 results.AddValue(scalar.ScalarValue(
82 results.current_page, category, 'MiB',
83 float(usage.get('mmaps_' + category, 0.0)) / 1024**2,
84 description=category))
85 _AddMMapStat('private_dirty')
86 #_AddMMapStat('overall_pss')
87 #_AddMMapStat('native_heap')
88 #_AddMMapStat('java_heap')
OLDNEW
« no previous file with comments | « tools/perf/measurements/blink_partition_alloc.py ('k') | tools/perf/page_sets/alexa_top_500.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698