| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import atexit | 5 import atexit |
| 6 import logging | 6 import logging |
| 7 | 7 |
| 8 from pylib import android_commands | 8 from pylib import android_commands |
| 9 from pylib.device import device_utils | 9 from pylib.device import device_utils |
| 10 | 10 |
| 11 class PerfControl(object): | 11 class PerfControl(object): |
| 12 """Provides methods for setting the performance mode of a device.""" | 12 """Provides methods for setting the performance mode of a device.""" |
| 13 _CPU_PATH = '/sys/devices/system/cpu' | 13 _CPU_PATH = '/sys/devices/system/cpu' |
| 14 _KERNEL_MAX = '/sys/devices/system/cpu/kernel_max' | 14 _KERNEL_MAX = '/sys/devices/system/cpu/kernel_max' |
| 15 | 15 |
| 16 def __init__(self, device): | 16 def __init__(self, device): |
| 17 # TODO(jbudorick) Remove once telemetry gets switched over. | 17 # TODO(jbudorick) Remove once telemetry gets switched over. |
| 18 if isinstance(device, android_commands.AndroidCommands): | 18 if isinstance(device, android_commands.AndroidCommands): |
| 19 device = device_utils.DeviceUtils(device) | 19 device = device_utils.DeviceUtils(device) |
| 20 self._device = device | 20 self._device = device |
| 21 # this will raise an AdbShellCommandFailedError if no CPU files are found | 21 # this will raise an AdbCommandFailedError if no CPU files are found |
| 22 self._cpu_files = self._device.RunShellCommand( | 22 self._cpu_files = self._device.RunShellCommand( |
| 23 'ls -d cpu[0-9]*', cwd=self._CPU_PATH, check_return=True, as_root=True) | 23 'ls -d cpu[0-9]*', cwd=self._CPU_PATH, check_return=True, as_root=True) |
| 24 assert self._cpu_files, 'Failed to detect CPUs.' | 24 assert self._cpu_files, 'Failed to detect CPUs.' |
| 25 self._cpu_file_list = ' '.join(self._cpu_files) | 25 self._cpu_file_list = ' '.join(self._cpu_files) |
| 26 logging.info('CPUs found: %s', self._cpu_file_list) | 26 logging.info('CPUs found: %s', self._cpu_file_list) |
| 27 self._have_mpdecision = self._device.FileExists('/system/bin/mpdecision') | 27 self._have_mpdecision = self._device.FileExists('/system/bin/mpdecision') |
| 28 | 28 |
| 29 def SetHighPerfMode(self): | 29 def SetHighPerfMode(self): |
| 30 """Sets the highest stable performance mode for the device.""" | 30 """Sets the highest stable performance mode for the device.""" |
| 31 if not self._device.old_interface.IsRootEnabled(): | 31 if not self._device.old_interface.IsRootEnabled(): |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 """ | 148 """ |
| 149 if self._have_mpdecision: | 149 if self._have_mpdecision: |
| 150 script = 'stop mpdecision' if force_online else 'start mpdecision' | 150 script = 'stop mpdecision' if force_online else 'start mpdecision' |
| 151 self._device.RunShellCommand(script, check_return=True, as_root=True) | 151 self._device.RunShellCommand(script, check_return=True, as_root=True) |
| 152 | 152 |
| 153 if not self._have_mpdecision and not self._AllCpusAreOnline(): | 153 if not self._have_mpdecision and not self._AllCpusAreOnline(): |
| 154 logging.warning('Unexpected cpu hot plugging detected.') | 154 logging.warning('Unexpected cpu hot plugging detected.') |
| 155 | 155 |
| 156 if force_online: | 156 if force_online: |
| 157 self._ForEachCpu('echo 1 > "$CPU/online"') | 157 self._ForEachCpu('echo 1 > "$CPU/online"') |
| OLD | NEW |