blob: e918ac31bff47abef41b2d619599b49a4a9e8206 [file] [log] [blame]
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import sys
class MemoryMetrics(object):
def __init__(self):
self._start_commit_charge = None
def Start(self, browser):
self._start_commit_charge = browser.memory_stats['SystemCommitCharge']
def StopAndGetResults(self, browser, results):
memory = browser.memory_stats
if not memory['Browser']:
return
metric = 'resident_set_size'
if sys.platform == 'win32':
metric = 'working_set'
def AddSummariesForProcessTypes(process_types_memory, process_type_trace):
def AddSummary(value_name_memory, value_name_trace):
if len(process_types_memory) > 1 and value_name_memory.endswith('Peak'):
return
values = []
for process_type_memory in process_types_memory:
if value_name_memory in memory[process_type_memory]:
values.append(memory[process_type_memory][value_name_memory])
if values:
results.AddSummary(value_name_trace + process_type_trace,
'bytes', sum(values), data_type='unimportant')
AddSummary('VM', 'vm_final_size_')
AddSummary('WorkingSetSize', 'vm_%s_final_size_' % metric)
AddSummary('PrivateDirty', 'vm_private_dirty_final_')
AddSummary('ProportionalSetSize', 'vm_proportional_set_size_final_')
AddSummary('VMPeak', 'vm_peak_size_')
AddSummary('WorkingSetSizePeak', '%s_peak_size_' % metric)
AddSummariesForProcessTypes(['Browser'], 'browser')
AddSummariesForProcessTypes(['Renderer'], 'renderer')
AddSummariesForProcessTypes(['Gpu'], 'gpu')
AddSummariesForProcessTypes(['Browser', 'Renderer', 'Gpu'], 'total')
results.AddSummary('commit_charge', 'kb',
memory['SystemCommitCharge'] - self._start_commit_charge,
data_type='unimportant')
results.AddSummary('processes', 'count', memory['ProcessCount'],
data_type='unimportant')