diff options
Diffstat (limited to 'tools/telemetry')
-rw-r--r-- | tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py index ec76125..f0a5ae5 100644 --- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py +++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py @@ -19,11 +19,6 @@ from telemetry.core.backends import adb_commands from telemetry.core.backends.chrome import android_browser_backend from telemetry.core.platform import android_platform_backend -try: - import psutil # pylint: disable=F0401 -except ImportError: - psutil = None - CHROME_PACKAGE_NAMES = { 'android-content-shell': @@ -212,15 +207,19 @@ def FindAllAvailableBrowsers(finder_options, logging=real_logging): # Ignore result. adb.EnableAdbRoot() - if psutil: - # Host side workaround for crbug.com/268450 (adb instability). + if sys.platform.startswith('linux'): + # Host side workaround for crbug.com/268450 (adb instability) # The adb server has a race which is mitigated by binding to a single core. - for proc in psutil.process_iter(): - try: - if 'adb' in proc.name: - proc.set_cpu_affinity([0]) - except (psutil.NoSuchProcess, psutil.AccessDenied): - logging.warn('Failed to set adb process CPU affinity') + import psutil # pylint: disable=F0401 + pids = [p.pid for p in psutil.process_iter() if 'adb' in p.name] + with open(os.devnull, 'w') as devnull: + for pid in pids: + ret = subprocess.call(['taskset', '-p', '-c', '0', str(pid)], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + stdin=devnull) + if ret: + logging.warn('Failed to taskset %d (%s)', pid, ret) if not os.environ.get('BUILDBOT_BUILDERNAME'): # Killing adbd before running tests has proven to make them less likely to |