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

Side by Side Diff: build/android/pylib/perf_tests_helper.py

Issue 11938002: Android: fix cpu governor setup for perf tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix random changes in perf test results - code review revision Created 7 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 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 re 5 import re
6 6
7 import android_commands 7 import android_commands
8 import json 8 import json
9 import math 9 import math
10 10
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 if sd: 119 if sd:
120 output += '\nSd %s: %f%s' % (measurement, sd, units) 120 output += '\nSd %s: %f%s' % (measurement, sd, units)
121 if print_to_stdout: 121 if print_to_stdout:
122 print output 122 print output
123 return output 123 return output
124 124
125 125
126 class PerfTestSetup(object): 126 class PerfTestSetup(object):
127 """Provides methods for setting up a device for perf testing.""" 127 """Provides methods for setting up a device for perf testing."""
128 _DROP_CACHES = '/proc/sys/vm/drop_caches' 128 _DROP_CACHES = '/proc/sys/vm/drop_caches'
129 _SCALING_GOVERNOR = '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' 129 _SCALING_GOVERNOR_FMT = (
130 '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor')
130 131
131 def __init__(self, adb): 132 def __init__(self, adb):
132 self._adb = adb 133 self._adb = adb
133 num_cpus = self._adb.GetFileContents('/sys/devices/system/cpu/online', 134 kernel_max = self._adb.GetFileContents('/sys/devices/system/cpu/kernel_max',
134 log_result=False) 135 log_result=False)
135 assert num_cpus, 'Unable to find /sys/devices/system/cpu/online' 136 assert kernel_max, 'Unable to find /sys/devices/system/cpu/kernel_max'
136 self._num_cpus = int(num_cpus[0].split('-')[-1]) 137 self._kernel_max = int(kernel_max[0])
137 self._original_scaling_governor = None 138 self._original_scaling_governor = None
138 139
139 def DropRamCaches(self): 140 def DropRamCaches(self):
140 """Drops the filesystem ram caches for performance testing.""" 141 """Drops the filesystem ram caches for performance testing."""
141 if not self._adb.IsRootEnabled(): 142 if not self._adb.IsRootEnabled():
142 self._adb.EnableAdbRoot() 143 self._adb.EnableAdbRoot()
143 self._adb.RunShellCommand('sync') 144 self._adb.RunShellCommand('sync')
144 self._adb.RunShellCommand('echo 3 > ' + PerfTestSetup._DROP_CACHES) 145 self._adb.RunShellCommand('echo 3 > ' + PerfTestSetup._DROP_CACHES)
145 146
146 def SetUp(self): 147 def SetUp(self):
147 """Sets up performance tests.""" 148 """Sets up performance tests."""
148 if not self._original_scaling_governor: 149 if not self._original_scaling_governor:
149 self._original_scaling_governor = self._adb.GetFileContents( 150 self._original_scaling_governor = self._adb.GetFileContents(
150 PerfTestSetup._SCALING_GOVERNOR % 0, 151 PerfTestSetup._SCALING_GOVERNOR_FMT % 0,
151 log_result=False)[0] 152 log_result=False)[0]
152 self._SetScalingGovernorInternal('performance') 153 self._SetScalingGovernorInternal('performance')
153 self.DropRamCaches() 154 self.DropRamCaches()
154 155
155 def TearDown(self): 156 def TearDown(self):
156 """Tears down performance tests.""" 157 """Tears down performance tests."""
157 if self._original_scaling_governor: 158 if self._original_scaling_governor:
158 self._SetScalingGovernorInternal(self._original_scaling_governor) 159 self._SetScalingGovernorInternal(self._original_scaling_governor)
159 self._original_scaling_governor = None 160 self._original_scaling_governor = None
160 161
161 def _SetScalingGovernorInternal(self, value): 162 def _SetScalingGovernorInternal(self, value):
162 for cpu in range(self._num_cpus): 163 for cpu in range(self._kernel_max + 1):
163 self._adb.RunShellCommand( 164 scaling_governor_file = PerfTestSetup._SCALING_GOVERNOR_FMT % cpu
164 ('echo %s > ' + PerfTestSetup._SCALING_GOVERNOR) % (value, cpu)) 165 if self._adb.Adb().DoesFileExist(scaling_governor_file):
166 self._adb.RunShellCommand(
167 ('echo %s > ' + scaling_governor_file) % value)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698