Index: tools/perf/perf_tools/page_cycler.py |
diff --git a/tools/perf/perf_tools/page_cycler.py b/tools/perf/perf_tools/page_cycler.py |
index 0d61bc16beaaf9cdbf1ab281a0c95de46aacd443..ead18e13198b458baec093e5d0e1520459d68463 100644 |
--- a/tools/perf/perf_tools/page_cycler.py |
+++ b/tools/perf/perf_tools/page_cycler.py |
@@ -1,6 +1,8 @@ |
# Copyright (c) 2012 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 |
+ |
from telemetry.core import util |
from telemetry.page import page_benchmark |
@@ -14,13 +16,125 @@ class PageCycler(page_benchmark.PageBenchmark): |
options.AppendExtraBrowserArg('--dom-automation') |
options.AppendExtraBrowserArg('--js-flags=--expose_gc') |
+ def MeasureMemory(self, tab, results): |
+ memory = tab.browser.memory_stats |
+ if not memory['Browser']: |
+ return |
+ |
+ metric = 'rss' |
+ if sys.platform == 'win32': |
+ metric = 'ws' |
+ |
+ # Browser |
+ if memory['Browser'].has_key('VM'): |
dtu
2013/03/04 23:26:15
if 'VM' in memory['Browser']:
has_key is deprecate
|
+ results.Add('vm_size_f_b', 'bytes', memory['Browser']['VM'], |
+ chart_name='vm_size_final_b', data_type='unimportant') |
+ if memory['Browser'].has_key('VMPeak'): |
+ results.Add('vm_peak_b', 'bytes', memory['Browser']['VMPeak'], |
+ chart_name='vm_pk_b', data_type='unimportant') |
+ if memory['Browser'].has_key('WorkingSetSize'): |
+ results.Add('vm_%s_f_b' % metric, 'bytes', |
+ memory['Browser']['WorkingSetSize'], |
+ chart_name='vm_%s_final_b' % metric, data_type='unimportant') |
+ if memory['Browser'].has_key('WorkingSetSizePeak'): |
+ results.Add('%s_peak_b' % metric, 'bytes', |
+ memory['Browser']['WorkingSetSizePeak'], |
+ chart_name='%s_pk_b' % metric, data_type='unimportant') |
+ if memory['Browser'].has_key('PrivateDirty'): |
+ results.Add('vm_private_dirty_f_b', 'bytes', |
+ memory['Browser']['PrivateDirty'], |
+ chart_name='vm_private_dirty_final_b', |
+ data_type='unimportant') |
+ if memory['Browser'].has_key('ProportionalSetSize'): |
+ results.Add('vm_pss_f_b', 'bytes', |
+ memory['Browser']['ProportionalSetSize'], |
+ chart_name='vm_pss_final_b', data_type='unimportant') |
+ |
+ # Renderer |
+ if memory['Renderer'].has_key('VM'): |
+ results.Add('vm_size_f_r', 'bytes', memory['Renderer']['VM'], |
+ chart_name='vm_size_final_r', data_type='unimportant') |
+ if memory['Renderer'].has_key('VMPeak'): |
+ results.Add('vm_peak_r', 'bytes', memory['Browser']['VMPeak'], |
+ chart_name='vm_pk_r', data_type='unimportant') |
+ if memory['Renderer'].has_key('WorkingSetSize'): |
+ results.Add('vm_%s_f_r' % metric, 'bytes', |
+ memory['Renderer']['WorkingSetSize'], |
+ chart_name='vm_%s_final_r' % metric, data_type='unimportant') |
+ if memory['Renderer'].has_key('WorkingSetSizePeak'): |
+ results.Add('%s_peak_r' % metric, 'bytes', |
+ memory['Browser']['WorkingSetSizePeak'], |
+ chart_name='%s_pk_r' % metric, data_type='unimportant') |
+ if memory['Renderer'].has_key('PrivateDirty'): |
+ results.Add('vm_private_dirty_f_r', 'bytes', |
+ memory['Renderer']['PrivateDirty'], |
+ chart_name='vm_private_dirty_final_r', |
+ data_type='unimportant') |
+ if memory['Renderer'].has_key('ProportionalSetSize'): |
+ results.Add('vm_pss_f_r', 'bytes', |
+ memory['Renderer']['ProportionalSetSize'], |
+ chart_name='vm_pss_final_r', data_type='unimportant') |
+ |
+ # Total |
+ if (memory['Browser'].has_key('VM') and |
+ memory['Renderer'].has_key('VM')): |
+ results.Add('vm_size_f_t', 'bytes', |
+ memory['Browser']['VM'] + memory['Renderer']['VM'], |
+ chart_name='vm_size_final_t', data_type='unimportant') |
+ if (memory['Browser'].has_key('WorkingSetSize') and |
+ memory['Renderer'].has_key('WorkingSetSize')): |
+ results.Add('vm_%s_f_t' % metric, 'bytes', |
+ memory['Browser']['WorkingSetSize'] + |
+ memory['Renderer']['WorkingSetSize'], |
+ chart_name='vm_%s_final_t' % metric, data_type='unimportant') |
+ if (memory['Browser'].has_key('PrivateDirty') and |
+ memory['Renderer'].has_key('PrivateDirty')): |
+ results.Add('vm_private_dirty_f_t', 'bytes', |
+ memory['Browser']['PrivateDirty'] + |
+ memory['Renderer']['PrivateDirty'], |
+ chart_name='vm_private_dirty_final_t', |
+ data_type='unimportant') |
+ if (memory['Browser'].has_key('ProportionalSetSize') and |
+ memory['Renderer'].has_key('ProportionalSetSize')): |
+ results.Add('vm_pss_f_t', 'bytes', |
+ memory['Browser']['ProportionalSetSize'] + |
+ memory['Renderer']['ProportionalSetSize'], |
+ chart_name='vm_pss_final_t', data_type='unimportant') |
+ |
+ results.Add('cc', 'kb', memory['SystemCommitCharge'], |
+ chart_name='commit_charge', data_type='unimportant') |
+ results.Add('proc_', 'count', memory['ProcessCount'], |
+ chart_name='processes', data_type='unimportant') |
+ |
+ def MeasureIO(self, tab, results): |
+ io_stats = tab.browser.io_stats |
+ if not io_stats['Browser']: |
+ return |
+ results.Add('r_op_b', '', io_stats['Browser']['ReadOperationCount'], |
+ chart_name='read_op_b', data_type='unimportant') |
+ results.Add('w_op_b', '', io_stats['Browser']['WriteOperationCount'], |
+ chart_name='write_op_b', data_type='unimportant') |
+ results.Add('r_b', 'kb', io_stats['Browser']['ReadTransferCount'], |
+ chart_name='read_byte_b', data_type='unimportant') |
+ results.Add('w_b', 'kb', io_stats['Browser']['WriteTransferCount'], |
+ chart_name='write_byte_b', data_type='unimportant') |
+ results.Add('r_op_r', '', io_stats['Renderer']['ReadOperationCount'], |
+ chart_name='read_op_r', data_type='unimportant') |
+ results.Add('w_op_r', '', io_stats['Renderer']['WriteOperationCount'], |
+ chart_name='write_op_r', data_type='unimportant') |
+ results.Add('r_r', 'kb', io_stats['Renderer']['ReadOperationCount'], |
+ chart_name='read_byte_r', data_type='unimportant') |
+ results.Add('w_r', 'kb', io_stats['Renderer']['WriteOperationCount'], |
+ chart_name='write_byte_r', data_type='unimportant') |
+ |
def MeasurePage(self, _, tab, results): |
def _IsDone(): |
return tab.GetCookieByName('__pc_done') == '1' |
util.WaitFor(_IsDone, 1200, poll_interval=5) |
print 'Pages: [%s]' % tab.GetCookieByName('__pc_pages') |
- # TODO(tonyg): Get IO and memory statistics. |
+ self.MeasureMemory(tab, results) |
+ self.MeasureIO(tab, results) |
for histogram in MEMORY_HISTOGRAMS: |
name = histogram['name'] |