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

Unified Diff: tools/perf/perf_tools/page_cycler.py

Issue 11576050: [Telemetry] Add memory and IO stats to page cycler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add abstract base platform_backend Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
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']

Powered by Google App Engine
This is Rietveld 408576698