Index: tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py |
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 ec76125286d74096a6c632265c191604c361855f..f0a5ae53e4fac7ee0ed366b63671f7474d5ecd84 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py |
@@ -18,11 +18,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 = { |
@@ -212,15 +207,19 @@ |
# 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 |