Index: tools/telemetry/telemetry/core/platform/profiler/vtune_profiler.py |
diff --git a/tools/telemetry/telemetry/core/platform/profiler/vtune_profiler.py b/tools/telemetry/telemetry/core/platform/profiler/vtune_profiler.py |
index 3e146fade13aaa75dec70ca15eb26482d07a2214..2bb4720c9acccaf6f8e907ef007625bacc761932 100644 |
--- a/tools/telemetry/telemetry/core/platform/profiler/vtune_profiler.py |
+++ b/tools/telemetry/telemetry/core/platform/profiler/vtune_profiler.py |
@@ -8,23 +8,29 @@ |
import sys |
import tempfile |
+from telemetry.core import util |
from telemetry.core.platform import profiler |
-from telemetry.core.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): |
+ def __init__(self, pid, output_file, 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: |
+ if platform_backend.GetOSName() == 'android': |
cmd += ['-target-system', 'android'] |
+ |
+ print 'On Android, assuming $CHROMIUM_OUT_DIR/Release/lib has a fresh' |
+ print 'symbolized library matching the one on device.' |
+ search_dir = os.path.join(util.GetChromiumSrcDir(), |
+ os.environ.get('CHROMIUM_OUT_DIR', 'out'), |
+ os.environ.get('BUILDTYPE', 'Release'), |
+ 'lib') |
+ cmd += ['-search-dir', search_dir] |
self._proc = subprocess.Popen( |
cmd, stdout=self._tmp_output_file, stderr=subprocess.STDOUT) |
@@ -48,29 +54,9 @@ |
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.adb.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 |
- |
+ if not exit_code: |
+ print 'To view the profile, run:' |
+ print ' amplxe-gui %s' % self._output_file |
return self._output_file |
def _GetStdOut(self): |
@@ -104,8 +90,7 @@ |
continue |
self._process_profilers.append( |
- _SingleProcessVTuneProfiler(pid, output_file, browser_backend, |
- platform_backend)) |
+ _SingleProcessVTuneProfiler(pid, output_file, platform_backend)) |
@classmethod |
def name(cls): |