summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authortonyg@chromium.org <tonyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-14 04:05:51 +0000
committertonyg@chromium.org <tonyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-14 04:05:51 +0000
commita6e0965a0c6e78fe090e8b2daa9bcc0bcc581bc9 (patch)
treeb8c2930ba7f30c2d79c49d6047a7921b574fde9b /tools
parent9fdc6b1f392df8b17cfc488373e72e42e2162ea2 (diff)
downloadchromium_src-a6e0965a0c6e78fe090e8b2daa9bcc0bcc581bc9.zip
chromium_src-a6e0965a0c6e78fe090e8b2daa9bcc0bcc581bc9.tar.gz
chromium_src-a6e0965a0c6e78fe090e8b2daa9bcc0bcc581bc9.tar.bz2
[Telemetry] Fix --cold-load-percent.
Previously, we didn't properly clear all the network caches. 1. DNS and predictor caches were left in tact. This was fixed by calling the net benchmarking extension methods. 2. Live resources in the memory cache were left in tact. This is fixed by navigating to about:blank to destroy the old renderer. Also, --enable-net-benchmarking is supported on the stable channel, so we can remove the workaround. With this, cold loads are consistent on Android: *RESULT cold_times: page_load_time= [4637,4493,4479,4564,4611,4549] ms Avg cold_times: 4555.500000ms Sd cold_times: 62.602716ms RESULT warm_times_by_url: http___www.youtube.com_watch?v_LIJOhk6FscY= [2122,2104,2079,2094] ms Avg warm_times_by_url: 2099.750000ms Sd warm_times_by_url: 18.043928ms BUG= Review URL: https://codereview.chromium.org/165193002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251252 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/measurements/page_cycler.py2
-rw-r--r--tools/perf/measurements/page_cycler_unittest.py3
-rw-r--r--tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py3
-rw-r--r--tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py12
-rw-r--r--tools/telemetry/telemetry/core/tab.py21
-rw-r--r--tools/telemetry/telemetry/page/page_runner.py2
-rwxr-xr-xtools/telemetry/telemetry/page/record_wpr.py2
7 files changed, 25 insertions, 20 deletions
diff --git a/tools/perf/measurements/page_cycler.py b/tools/perf/measurements/page_cycler.py
index c02a30b..3c783dd 100644
--- a/tools/perf/measurements/page_cycler.py
+++ b/tools/perf/measurements/page_cycler.py
@@ -80,7 +80,7 @@ class PageCycler(page_measurement.PageMeasurement):
def WillNavigateToPage(self, page, tab):
page.script_to_evaluate_on_commit = self._page_cycler_js
if self.ShouldRunCold(page.url):
- tab.ClearCache()
+ tab.ClearCache(force=True)
if self._report_speed_index:
self._speedindex_metric.Start(page, tab)
diff --git a/tools/perf/measurements/page_cycler_unittest.py b/tools/perf/measurements/page_cycler_unittest.py
index 13f4cd2..ce0ad12 100644
--- a/tools/perf/measurements/page_cycler_unittest.py
+++ b/tools/perf/measurements/page_cycler_unittest.py
@@ -38,7 +38,8 @@ class FakePage(object):
class FakeTab(object):
def __init__(self):
self.clear_cache_calls = 0
- def ClearCache(self):
+ def ClearCache(self, force=False):
+ assert force
self.clear_cache_calls += 1
def EvaluateJavaScript(self, _):
return 1
diff --git a/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py b/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
index d1c12a3..43793d7 100644
--- a/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
+++ b/tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
@@ -93,9 +93,10 @@ class ChromeBrowserBackend(browser_backend.BrowserBackend):
args = []
args.extend(self.browser_options.extra_browser_args)
args.append('--disable-background-networking')
+ args.append('--enable-net-benchmarking')
args.append('--metrics-recording-only')
- args.append('--no-first-run')
args.append('--no-default-browser-check')
+ args.append('--no-first-run')
args.append('--no-proxy-server')
if self.browser_options.netsim:
args.append('--ignore-certificate-errors')
diff --git a/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py b/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py
index 904cd92..18a56a4 100644
--- a/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py
+++ b/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py
@@ -55,7 +55,6 @@ class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
self._browser_directory = browser_directory
self._port = None
self._profile_dir = None
- self._supports_net_benchmarking = True
self._tmp_minidump_dir = tempfile.mkdtemp()
self._SetupProfile()
@@ -119,10 +118,6 @@ class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
args.append('--window-size=1280,1024')
if self._flash_path:
args.append('--ppapi-flash-path=%s' % self._flash_path)
- if self._supports_net_benchmarking:
- args.append('--enable-net-benchmarking')
- else:
- args.append('--enable-benchmarking')
if not self.browser_options.dont_override_profile:
args.append('--user-data-dir=%s' % self._tmp_profile_dir)
return args
@@ -140,13 +135,6 @@ class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
def Start(self):
self._LaunchBrowser()
- # For old chrome versions, might have to relaunch to have the
- # correct net_benchmarking switch.
- if self.chrome_branch_number < 1418:
- self.Close()
- self._supports_net_benchmarking = False
- self._LaunchBrowser()
-
@property
def pid(self):
if self._proc:
diff --git a/tools/telemetry/telemetry/core/tab.py b/tools/telemetry/telemetry/core/tab.py
index d44fc09..8b677df 100644
--- a/tools/telemetry/telemetry/core/tab.py
+++ b/tools/telemetry/telemetry/core/tab.py
@@ -253,6 +253,21 @@ class Tab(web_contents.WebContents):
def CollectGarbage(self):
self._inspector_backend.CollectGarbage()
- def ClearCache(self):
- """Clears the browser's HTTP disk cache and the tab's HTTP memory cache."""
- self._inspector_backend.ClearCache()
+ def ClearCache(self, force):
+ """Clears the browser's networking related disk, memory and other caches.
+
+ Args:
+ force: Iff true, navigates to about:blank which destroys the previous
+ renderer, ensuring that even "live" resources in the memory cache are
+ cleared.
+ """
+ self.ExecuteJavaScript("""
+ if (window.chrome && chrome.benchmarking &&
+ chrome.benchmarking.clearCache) {
+ chrome.benchmarking.clearCache();
+ chrome.benchmarking.clearPredictorCache();
+ chrome.benchmarking.clearHostResolverCache();
+ }
+ """)
+ if force:
+ self.Navigate('about:blank')
diff --git a/tools/telemetry/telemetry/page/page_runner.py b/tools/telemetry/telemetry/page/page_runner.py
index c209a5d..f52030a 100644
--- a/tools/telemetry/telemetry/page/page_runner.py
+++ b/tools/telemetry/telemetry/page/page_runner.py
@@ -154,7 +154,7 @@ class PageState(object):
if test:
if test.clear_cache_before_each_run:
- self.tab.ClearCache()
+ self.tab.ClearCache(force=True)
def ImplicitPageNavigation(self, test=None):
"""Executes the implicit navigation that occurs for every page iteration.
diff --git a/tools/telemetry/telemetry/page/record_wpr.py b/tools/telemetry/telemetry/page/record_wpr.py
index 9280f2c..6aaec35 100755
--- a/tools/telemetry/telemetry/page/record_wpr.py
+++ b/tools/telemetry/telemetry/page/record_wpr.py
@@ -46,7 +46,7 @@ class RecordPage(page_test.PageTest):
def WillNavigateToPage(self, page, tab):
"""Override to ensure all resources are fetched from network."""
- tab.ClearCache()
+ tab.ClearCache(force=False)
if self.test:
self.test.WillNavigateToPage(page, tab)