aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoj Gupta <manojgupta@google.com>2017-03-13 20:46:18 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-03-17 16:00:53 -0700
commit6b18d24494eac4c615a9d040855155a19f0329b6 (patch)
tree94b43bb1d39071fc82fe9255df450eee955e62c2
parentcdd7d45be9b171835027165ed0474bf8dbc04a9d (diff)
downloadtoolchain-utils-6b18d24494eac4c615a9d040855155a19f0329b6.tar.gz
Set scaling governor to performance in crosperf.
Elm seems to have stable numbers when only governor is set. Disable turbo is intel pstate thermal driver is used. Tested on squawks and lumpy. Includes some minor tc_pyformat changes. BUG=chromium:700190 TEST=Tested on elm, squawks, lumpy, kevin, falco and veyron_jaq. Change-Id: Ib368234b3bde5e54ff9b53ae3766e7384bd1df5f Reviewed-on: https://chromium-review.googlesource.com/454299 Commit-Ready: Manoj Gupta <manojgupta@chromium.org> Tested-by: Manoj Gupta <manojgupta@chromium.org> Reviewed-by: Caroline Tice <cmtice@chromium.org>
-rw-r--r--crosperf/suite_runner.py39
-rwxr-xr-xcrosperf/suite_runner_unittest.py41
2 files changed, 36 insertions, 44 deletions
diff --git a/crosperf/suite_runner.py b/crosperf/suite_runner.py
index 678113a7..66d8109f 100644
--- a/crosperf/suite_runner.py
+++ b/crosperf/suite_runner.py
@@ -88,22 +88,26 @@ class SuiteRunner(object):
# pyformat: disable
set_cpu_freq = (
'set -e && '
+ # Disable Turbo in Intel pstate driver
+ 'if [[ -e /sys/devices/system/cpu/intel_pstate/no_turbo ]]; then '
+ 'echo -n 1 > /sys/devices/system/cpu/intel_pstate/no_turbo; fi; '
+ # Set governor to performance for each cpu
'for f in /sys/devices/system/cpu/cpu*/cpufreq; do '
'cd $f; '
- 'val=0; '
- 'if [[ -e scaling_available_frequencies ]]; then '
- # pylint: disable=line-too-long
- ' val=`cat scaling_available_frequencies | tr " " "\\n" | sort -n -b -r`; '
- 'else '
- ' val=`cat scaling_max_freq | tr " " "\\n" | sort -n -b -r`; fi ; '
- 'set -- $val; '
- 'highest=$1; '
- 'if [[ $# -gt 1 ]]; then '
- ' case $highest in *1000) highest=$2;; esac; '
- 'fi ;'
- 'echo $highest > scaling_max_freq; '
- 'echo $highest > scaling_min_freq; '
'echo performance > scaling_governor; '
+ # Uncomment rest of lines to enable setting frequency by crosperf
+ #'val=0; '
+ #'if [[ -e scaling_available_frequencies ]]; then '
+ #' val=`cat scaling_available_frequencies | tr " " "\\n" | sort -n -b -r`; '
+ #'else '
+ #' val=`cat scaling_max_freq | tr " " "\\n" | sort -n -b -r`; fi ; '
+ #'set -- $val; '
+ #'highest=$1; '
+ #'if [[ $# -gt 1 ]]; then '
+ #' case $highest in *1000) highest=$2;; esac; '
+ #'fi ;'
+ #'echo $highest > scaling_max_freq; '
+ #'echo $highest > scaling_min_freq; '
'done'
)
# pyformat: enable
@@ -218,11 +222,10 @@ class SuiteRunner(object):
args_string = "test_args='%s'" % test_args
cmd = ('{} {} {} --board={} --args="{} run_local={} test={} '
- '{}" {} telemetry_Crosperf'.format(TEST_THAT_PATH, autotest_dir_arg,
- fast_arg, label.board,
- args_string, benchmark.run_local,
- benchmark.test_name,
- profiler_args, machine))
+ '{}" {} telemetry_Crosperf'.format(
+ TEST_THAT_PATH, autotest_dir_arg, fast_arg, label.board,
+ args_string, benchmark.run_local, benchmark.test_name,
+ profiler_args, machine))
# Use --no-ns-pid so that cros_sdk does not create a different
# process namespace and we can kill process created easily by their
diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py
index fd8de661..4b87f9c7 100755
--- a/crosperf/suite_runner_unittest.py
+++ b/crosperf/suite_runner_unittest.py
@@ -28,10 +28,9 @@ class SuiteRunnerTest(unittest.TestCase):
mock_cmd_exec = mock.Mock(spec=command_executer.CommandExecuter)
mock_cmd_term = mock.Mock(spec=command_executer.CommandTerminator)
mock_logger = mock.Mock(spec=logger.Logger)
- mock_label = label.MockLabel('lumpy', 'lumpy_chromeos_image', '',
- '/tmp/chromeos', 'lumpy',
- ['lumpy1.cros', 'lumpy.cros2'], '', '', False,
- 'average', 'gcc', '')
+ mock_label = label.MockLabel(
+ 'lumpy', 'lumpy_chromeos_image', '', '/tmp/chromeos', 'lumpy',
+ ['lumpy1.cros', 'lumpy.cros2'], '', '', False, 'average', 'gcc', '')
telemetry_crosperf_bench = Benchmark(
'b1_test', # name
'octane', # test_name
@@ -72,9 +71,8 @@ class SuiteRunnerTest(unittest.TestCase):
self.call_telemetry_run = False
def setUp(self):
- self.runner = suite_runner.SuiteRunner(self.mock_logger, 'verbose',
- self.mock_cmd_exec,
- self.mock_cmd_term)
+ self.runner = suite_runner.SuiteRunner(
+ self.mock_logger, 'verbose', self.mock_cmd_exec, self.mock_cmd_term)
def test_get_profiler_args(self):
input_str = ('--profiler=custom_perf --profiler_args=\'perf_options'
@@ -136,9 +134,9 @@ class SuiteRunnerTest(unittest.TestCase):
self.assertTrue(self.call_telemetry_run)
self.assertFalse(self.call_test_that_run)
self.assertFalse(self.call_telemetry_crosperf_run)
- self.assertEqual(
- self.telemetry_run_args,
- ['fake_machine', self.mock_label, self.telemetry_bench, ''])
+ self.assertEqual(self.telemetry_run_args, [
+ 'fake_machine', self.mock_label, self.telemetry_bench, ''
+ ])
reset()
self.runner.Run(machine, self.mock_label, self.test_that_bench, test_args,
@@ -147,9 +145,9 @@ class SuiteRunnerTest(unittest.TestCase):
self.assertFalse(self.call_telemetry_run)
self.assertTrue(self.call_test_that_run)
self.assertFalse(self.call_telemetry_crosperf_run)
- self.assertEqual(
- self.test_that_args,
- ['fake_machine', self.mock_label, self.test_that_bench, '', ''])
+ self.assertEqual(self.test_that_args, [
+ 'fake_machine', self.mock_label, self.test_that_bench, '', ''
+ ])
reset()
self.runner.Run(machine, self.mock_label, self.telemetry_crosperf_bench,
@@ -171,21 +169,12 @@ class SuiteRunnerTest(unittest.TestCase):
# pyformat: disable
set_cpu_cmd = (
'set -e && '
+ # Disable Turbo in Intel pstate driver
+ 'if [[ -e /sys/devices/system/cpu/intel_pstate/no_turbo ]]; then '
+ 'echo -n 1 > /sys/devices/system/cpu/intel_pstate/no_turbo; fi; '
+ # Set governor to performance for each cpu
'for f in /sys/devices/system/cpu/cpu*/cpufreq; do '
'cd $f; '
- 'val=0; '
- 'if [[ -e scaling_available_frequencies ]]; then '
- # pylint: disable=line-too-long
- ' val=`cat scaling_available_frequencies | tr " " "\\n" | sort -n -b -r`; '
- 'else '
- ' val=`cat scaling_max_freq | tr " " "\\n" | sort -n -b -r`; fi ; '
- 'set -- $val; '
- 'highest=$1; '
- 'if [[ $# -gt 1 ]]; then '
- ' case $highest in *1000) highest=$2;; esac; '
- 'fi ;'
- 'echo $highest > scaling_max_freq; '
- 'echo $highest > scaling_min_freq; '
'echo performance > scaling_governor; '
'done'
)