[email protected] | 47da79b5 | 2013-06-18 16:38:11 | [diff] [blame] | 1 | # 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. |
| 4 | import sys |
| 5 | |
| 6 | class 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 | |