Adding V8 and process memory information as metrics that endure tracks

BUG=273827

Review URL: https://chromiumcodereview.appspot.com/23961002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221658 0039d316-1c4b-4281-b951-d872f2087c98
parent 437e270f
...@@ -2,15 +2,40 @@ ...@@ -2,15 +2,40 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
from metrics import v8_object_stats
from telemetry.page import page_measurement from telemetry.page import page_measurement
import optparse import optparse
import time import time
_V8_BYTES_COMMITED = [
'V8.MemoryNewSpaceBytesCommitted',
'V8.MemoryOldPointerSpaceBytesCommitted',
'V8.MemoryOldDataSpaceBytesCommitted',
'V8.MemoryCodeSpaceBytesCommitted',
'V8.MemoryMapSpaceBytesCommitted',
'V8.MemoryCellSpaceBytesCommitted',
'V8.MemoryPropertyCellSpaceBytesCommitted',
'V8.MemoryLoSpaceBytesCommitted'
]
_V8_BYTES_USED = [
'V8.MemoryNewSpaceBytesUsed',
'V8.MemoryOldPointerSpaceBytesUsed',
'V8.MemoryOldDataSpaceBytesUsed',
'V8.MemoryCodeSpaceBytesUsed',
'V8.MemoryMapSpaceBytesUsed',
'V8.MemoryCellSpaceBytesUsed',
'V8.MemoryPropertyCellSpaceBytesUsed',
'V8.MemoryLoSpaceBytesUsed'
]
_V8_MEMORY_ALLOCATED = [
'V8.OsMemoryAllocated'
]
class Endure(page_measurement.PageMeasurement): class Endure(page_measurement.PageMeasurement):
def __init__(self): def __init__(self):
super(Endure, self).__init__('endure') super(Endure, self).__init__('endure')
self._browser = None
self._test_start_time = None self._test_start_time = None
# Timestamp of the last memory retrieval. # Timestamp of the last memory retrieval.
...@@ -25,6 +50,13 @@ class Endure(page_measurement.PageMeasurement): ...@@ -25,6 +50,13 @@ class Endure(page_measurement.PageMeasurement):
help='Time interval between perf dumps (secs)') help='Time interval between perf dumps (secs)')
parser.add_option_group(group) parser.add_option_group(group)
def DidStartBrowser(self, browser):
# Save the browser for memory_stats.
self._browser = browser
def CustomizeBrowserOptions(self, options):
v8_object_stats.V8ObjectStatsMetric.CustomizeBrowserOptions(options)
def CanRunForPage(self, page): def CanRunForPage(self, page):
return hasattr(page, 'endure') return hasattr(page, 'endure')
...@@ -44,19 +76,59 @@ class Endure(page_measurement.PageMeasurement): ...@@ -44,19 +76,59 @@ class Endure(page_measurement.PageMeasurement):
elapsed_time = int(round(now - self._test_start_time)) elapsed_time = int(round(now - self._test_start_time))
# DOM Nodes # DOM Nodes
dom_node_count = tab.dom_stats['node_count'] dom_stats = tab.dom_stats
dom_node_count = dom_stats['node_count']
self._SaveToResults(results, 'TotalDOMNodeCount_X', self._SaveToResults(results, 'TotalDOMNodeCount_X',
'seconds', elapsed_time) 'seconds', elapsed_time)
self._SaveToResults(results, 'TotalDOMNodeCount_Y', self._SaveToResults(results, 'TotalDOMNodeCount_Y',
'nodes', dom_node_count) 'nodes', dom_node_count)
# Event Listeners # Event Listeners
event_listener_count = tab.dom_stats['event_listener_count'] event_listener_count = dom_stats['event_listener_count']
self._SaveToResults(results, 'EventListenerCount_X', self._SaveToResults(results, 'EventListenerCount_X',
'seconds', elapsed_time) 'seconds', elapsed_time)
self._SaveToResults(results, 'EventListenerCount_Y', self._SaveToResults(results, 'EventListenerCount_Y',
'listeners', event_listener_count) 'listeners', event_listener_count)
# Memory stats
memory_stats = self._browser.memory_stats
browser_vm = memory_stats['Browser'].get('VM', 0) / 1024.0
self._SaveToResults(results, 'BrowserVirtualMemory_X',
'seconds', elapsed_time)
self._SaveToResults(results, 'BrowserVirtualMemory_Y',
'KB', browser_vm)
renderer_vm = memory_stats['Renderer'].get('VM', 0) / 1024.0
self._SaveToResults(results, 'RendererVirtualMemory_X',
'seconds', elapsed_time)
self._SaveToResults(results, 'RendererVirtualMemory_Y',
'KB', renderer_vm)
# V8 stats
v8_bytes_commited = v8_object_stats.V8ObjectStatsMetric.GetV8StatsTable(
tab, _V8_BYTES_COMMITED)
v8_bytes_commited = sum(v8_bytes_commited.values()) / 1024.0
self._SaveToResults(results, 'V8BytesCommited_X',
'seconds', elapsed_time)
self._SaveToResults(results, 'V8BytesCommited_Y',
'KB', v8_bytes_commited)
v8_bytes_used = v8_object_stats.V8ObjectStatsMetric.GetV8StatsTable(
tab, _V8_BYTES_USED)
print v8_bytes_used
v8_bytes_used = sum(v8_bytes_used.values()) / 1024.0
self._SaveToResults(results, 'V8BytesUsed_X',
'seconds', elapsed_time)
self._SaveToResults(results, 'V8BytesUsed_Y',
'KB', v8_bytes_used)
v8_mem_allocated = v8_object_stats.V8ObjectStatsMetric.GetV8StatsTable(
tab, _V8_MEMORY_ALLOCATED)
v8_mem_allocated = sum(v8_mem_allocated.values()) / 1024.0
self._SaveToResults(results, 'V8MemoryAllocated_X',
'seconds', elapsed_time)
self._SaveToResults(results, 'V8MemoryAllocated_Y',
'KB', v8_mem_allocated)
def _SaveToResults(self, results, trace_name, units, value, def _SaveToResults(self, results, trace_name, units, value,
chart_name=None, data_type='default'): chart_name=None, data_type='default'):
results.Add(trace_name, units, value, chart_name, data_type) results.Add(trace_name, units, value, chart_name, data_type)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment