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

Unified Diff: tools/telemetry/telemetry/internal/platform/profiler/vtune_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/vtune_profiler.py
diff --git a/tools/telemetry/telemetry/internal/platform/profiler/vtune_profiler.py b/tools/telemetry/telemetry/internal/platform/profiler/vtune_profiler.py
deleted file mode 100644
index d9a2fac09c0dc748ed7017e9c6b0e3bf88dc90a8..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/platform/profiler/vtune_profiler.py
+++ /dev/null
@@ -1,155 +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 subprocess
-import sys
-import tempfile
-
-from telemetry.core import exceptions
-from telemetry.internal.platform import profiler
-from telemetry.internal.platform.profiler import android_profiling_helper
-
-
-class _SingleProcessVTuneProfiler(object):
- """An internal class for using vtune for a given process."""
- def __init__(self, pid, output_file, browser_backend, platform_backend):
- self._pid = pid
- self._browser_backend = browser_backend
- self._platform_backend = platform_backend
- self._output_file = output_file
- self._tmp_output_file = tempfile.NamedTemporaryFile('w', 0)
- cmd = ['amplxe-cl', '-collect', 'hotspots',
- '-target-pid', str(pid), '-r', self._output_file]
- self._is_android = platform_backend.GetOSName() == 'android'
- if self._is_android:
- cmd += ['-target-system', 'android']
-
- self._proc = subprocess.Popen(
- cmd, stdout=self._tmp_output_file, stderr=subprocess.STDOUT)
-
- def CollectProfile(self):
- if 'renderer' in self._output_file:
- try:
- self._platform_backend.GetCommandLine(self._pid)
- except exceptions.ProcessGoneException:
- logging.warning('Renderer was swapped out during profiling. '
- 'To collect a full profile rerun with '
- '"--extra-browser-args=--single-process"')
- subprocess.call(['amplxe-cl', '-command', 'stop', '-r', self._output_file])
-
- exit_code = self._proc.wait()
- try:
- # 1: amplxe: Error: Cannot find a running process with the specified ID.
- # Provide a valid PID.
- if exit_code not in (0, 1):
- raise Exception(
- 'amplxe-cl failed with exit code %d. Output:\n%s' % (exit_code,
- self._GetStdOut()))
- finally:
- self._tmp_output_file.close()
-
- if exit_code:
- # The renderer process was swapped out. Now that we made sure VTune has
- # stopped, return without further processing the invalid profile.
- return self._output_file
-
- if self._is_android:
- required_libs = \
- android_profiling_helper.GetRequiredLibrariesForVTuneProfile(
- self._output_file)
-
- device = self._browser_backend.device
- symfs_root = os.path.dirname(self._output_file)
- android_profiling_helper.CreateSymFs(device,
- symfs_root,
- required_libs,
- use_symlinks=True)
- logging.info('Resolving symbols in profile.')
- subprocess.call(['amplxe-cl', '-finalize', '-r', self._output_file,
- '-search-dir', symfs_root])
-
- print 'To view the profile, run:'
- print ' amplxe-gui %s' % self._output_file
-
- return self._output_file
-
- def _GetStdOut(self):
- self._tmp_output_file.flush()
- try:
- with open(self._tmp_output_file.name) as f:
- return f.read()
- except IOError:
- return ''
-
-
-class VTuneProfiler(profiler.Profiler):
-
- def __init__(self, browser_backend, platform_backend, output_path, state):
- super(VTuneProfiler, self).__init__(
- browser_backend, platform_backend, output_path, state)
- process_output_file_map = self._GetProcessOutputFileMap()
- self._process_profilers = []
-
- has_renderer = False
- for pid, output_file in process_output_file_map.iteritems():
- if 'renderer' in output_file:
- has_renderer = True
- break
-
- for pid, output_file in process_output_file_map.iteritems():
- if has_renderer:
- if not 'renderer' in output_file:
- continue
- elif not 'browser0' in output_file:
- continue
-
- self._process_profilers.append(
- _SingleProcessVTuneProfiler(pid, output_file, browser_backend,
- platform_backend))
-
- @classmethod
- def name(cls):
- return 'vtune'
-
- @classmethod
- def is_supported(cls, browser_type):
- if sys.platform != 'linux2':
- return False
- if browser_type.startswith('cros'):
- return False
- try:
- proc = subprocess.Popen(['amplxe-cl', '-version'],
- stderr=subprocess.STDOUT,
- stdout=subprocess.PIPE)
- proc.communicate()
- if proc.returncode != 0:
- return False
-
- if browser_type.startswith('android'):
- # VTune checks if 'su' is available on the device.
- proc = subprocess.Popen(['adb', 'shell', 'su', '-c', 'id'],
- stderr=subprocess.STDOUT,
- stdout=subprocess.PIPE)
- return 'not found' not in proc.communicate()[0]
-
- return True
- except OSError:
- return False
-
- @classmethod
- def CustomizeBrowserOptions(cls, browser_type, options):
- options.AppendExtraBrowserArgs([
- '--no-sandbox',
- '--allow-sandbox-debugging',
- ])
-
- def CollectProfile(self):
- print 'Processing profile, this will take a few minutes...'
-
- output_files = []
- for single_process in self._process_profilers:
- output_files.append(single_process.CollectProfile())
- return output_files

Powered by Google App Engine
This is Rietveld 408576698