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

Unified Diff: tools/telemetry/telemetry/internal/platform/profiler/tcmalloc_heap_profiler.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/telemetry/telemetry/internal/platform/profiler/tcmalloc_heap_profiler.py
diff --git a/tools/telemetry/telemetry/internal/platform/profiler/tcmalloc_heap_profiler.py b/tools/telemetry/telemetry/internal/platform/profiler/tcmalloc_heap_profiler.py
deleted file mode 100644
index a11ae4cd6466dd399b2b084184e3f877227deafd..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/platform/profiler/tcmalloc_heap_profiler.py
+++ /dev/null
@@ -1,148 +0,0 @@
-# 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 logging
-import os
-import sys
-
-from telemetry.internal.backends.chrome import android_browser_finder
-from telemetry.internal.platform import profiler
-
-# Environment variables to (android properties, default value) mapping.
-_ENV_VARIABLES = {
- 'HEAP_PROFILE_TIME_INTERVAL': ('heapprof.time_interval', 20),
- 'HEAP_PROFILE_MMAP': ('heapprof.mmap', 1),
- 'DEEP_HEAP_PROFILE': ('heapprof.deep_heap_profile', 1),
-}
-
-
-class _TCMallocHeapProfilerAndroid(object):
- """An internal class to set android properties and fetch dumps from device."""
-
- _DEFAULT_DEVICE_DIR = '/data/local/tmp/heap'
-
- def __init__(self, browser_backend, output_path):
- self._browser_backend = browser_backend
- self._output_path = output_path
-
- _ENV_VARIABLES['HEAPPROFILE'] = ('heapprof',
- os.path.join(self._DEFAULT_DEVICE_DIR, 'dmprof'))
-
- self._SetDeviceProperties(_ENV_VARIABLES)
-
- def _SetDeviceProperties(self, properties):
- device_configured = False
- # This profiler requires adb root to set properties.
- try:
- self._browser_backend.device.EnableRoot()
- except:
- logging.exception('New exception caused by DeviceUtils conversion')
- raise
- for values in properties.itervalues():
- device_property = self._browser_backend.device.GetProp(values[0])
- if not device_property or not device_property.strip():
- self._browser_backend.device.SetProp(values[0], values[1])
- device_configured = True
- if not self._browser_backend.device.FileExists(
- self._DEFAULT_DEVICE_DIR):
- self._browser_backend.device.RunShellCommand(
- 'mkdir -p ' + self._DEFAULT_DEVICE_DIR)
- self._browser_backend.device.RunShellCommand(
- 'chmod 777 ' + self._DEFAULT_DEVICE_DIR)
- device_configured = True
- if device_configured:
- raise Exception('Device required special config, run again.')
-
- def CollectProfile(self):
- try:
- self._browser_backend.device.PullFile(
- self._DEFAULT_DEVICE_DIR, self._output_path)
- except:
- logging.exception('New exception caused by DeviceUtils conversion')
- raise
- self._browser_backend.device.RunShellCommand(
- 'rm ' + os.path.join(self._DEFAULT_DEVICE_DIR, '*'))
- if os.path.exists(self._output_path):
- logging.info('TCMalloc dumps pulled to %s', self._output_path)
- with file(os.path.join(self._output_path,
- 'browser.pid'), 'w') as pid_file:
- pid_file.write(str(self._browser_backend.pid).rjust(5, '0'))
- return [self._output_path]
-
-
-class _TCMallocHeapProfilerLinux(object):
- """An internal class to set environment variables and fetch dumps."""
-
- _DEFAULT_DIR = '/tmp/tcmalloc/'
-
- def __init__(self, browser_backend):
- self._browser_backend = browser_backend
- _ENV_VARIABLES['HEAPPROFILE'] = ('heapprof', self._DEFAULT_DIR + 'dmprof')
- self._CheckEnvironmentVariables(_ENV_VARIABLES)
-
- def _CheckEnvironmentVariables(self, env_vars):
- msg = ''
- for key, values in env_vars.iteritems():
- if key not in os.environ:
- msg += '%s=%s ' % (key, str(values[1]))
- if msg:
- raise Exception('Need environment variables, try again with:\n %s' % msg)
- if not os.path.exists(os.environ['HEAPPROFILE']):
- os.makedirs(os.environ['HEAPPROFILE'])
- assert os.path.isdir(os.environ['HEAPPROFILE']), 'HEAPPROFILE is not a dir'
-
- def CollectProfile(self):
- with file(os.path.join(os.path.dirname(os.environ['HEAPPROFILE']),
- 'browser.pid'), 'w') as pid_file:
- pid_file.write(str(self._browser_backend.pid))
- print 'TCMalloc dumps available ', os.environ['HEAPPROFILE']
- return [os.environ['HEAPPROFILE']]
-
-
-class TCMallocHeapProfiler(profiler.Profiler):
- """A Factory to instantiate the platform-specific profiler."""
- def __init__(self, browser_backend, platform_backend, output_path, state):
- super(TCMallocHeapProfiler, self).__init__(
- browser_backend, platform_backend, output_path, state)
- if platform_backend.GetOSName() == 'android':
- self._platform_profiler = _TCMallocHeapProfilerAndroid(
- browser_backend, output_path)
- else:
- self._platform_profiler = _TCMallocHeapProfilerLinux(browser_backend)
-
- @classmethod
- def name(cls):
- return 'tcmalloc-heap'
-
- @classmethod
- def is_supported(cls, browser_type):
- if browser_type.startswith('cros'):
- return False
- if sys.platform.startswith('linux'):
- return True
- if browser_type == 'any':
- return android_browser_finder.CanFindAvailableBrowsers()
- return browser_type.startswith('android')
-
- @classmethod
- def CustomizeBrowserOptions(cls, browser_type, options):
- options.AppendExtraBrowserArgs('--no-sandbox')
- options.AppendExtraBrowserArgs('--enable-memory-benchmarking')
-
- @classmethod
- def WillCloseBrowser(cls, browser_backend, platform_backend):
- # The tcmalloc_heap_profiler dumps files at regular
- # intervals (~20 secs).
- # This is a minor optimization to ensure it'll dump the last file when
- # the test completes.
- for i in xrange(len(browser_backend.browser.tabs)):
- browser_backend.browser.tabs[i].ExecuteJavaScript("""
- if (chrome && chrome.memoryBenchmarking) {
- chrome.memoryBenchmarking.heapProfilerDump('renderer', 'final');
- chrome.memoryBenchmarking.heapProfilerDump('browser', 'final');
- }
- """)
-
- def CollectProfile(self):
- return self._platform_profiler.CollectProfile()

Powered by Google App Engine
This is Rietveld 408576698