blob: e918ac31bff47abef41b2d619599b49a4a9e8206 [file] [log] [blame]
[email protected]47da79b52013-06-18 16:38:111# Copyright 2013 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.
4import sys
5
6class MemoryMetrics(object):
7 def __init__(self):
8 self._start_commit_charge = None
9
10 def Start(self, browser):
11 self._start_commit_charge = browser.memory_stats['SystemCommitCharge']
12
13 def StopAndGetResults(self, browser, results):
14 memory = browser.memory_stats
15 if not memory['Browser']:
16 return
17
18 metric = 'resident_set_size'
19 if sys.platform == 'win32':
20 metric = 'working_set'
21
22 def AddSummariesForProcessTypes(process_types_memory, process_type_trace):
23 def AddSummary(value_name_memory, value_name_trace):
24 if len(process_types_memory) > 1 and value_name_memory.endswith('Peak'):
25 return
26 values = []
27 for process_type_memory in process_types_memory:
28 if value_name_memory in memory[process_type_memory]:
29 values.append(memory[process_type_memory][value_name_memory])
30 if values:
31 results.AddSummary(value_name_trace + process_type_trace,
32 'bytes', sum(values), data_type='unimportant')
33 AddSummary('VM', 'vm_final_size_')
34 AddSummary('WorkingSetSize', 'vm_%s_final_size_' % metric)
35 AddSummary('PrivateDirty', 'vm_private_dirty_final_')
36 AddSummary('ProportionalSetSize', 'vm_proportional_set_size_final_')
37 AddSummary('VMPeak', 'vm_peak_size_')
38 AddSummary('WorkingSetSizePeak', '%s_peak_size_' % metric)
39
40 AddSummariesForProcessTypes(['Browser'], 'browser')
41 AddSummariesForProcessTypes(['Renderer'], 'renderer')
42 AddSummariesForProcessTypes(['Gpu'], 'gpu')
43 AddSummariesForProcessTypes(['Browser', 'Renderer', 'Gpu'], 'total')
44
45 results.AddSummary('commit_charge', 'kb',
46 memory['SystemCommitCharge'] - self._start_commit_charge,
47 data_type='unimportant')
48 results.AddSummary('processes', 'count', memory['ProcessCount'],
49 data_type='unimportant')
50