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

Unified Diff: scripts/slave/recipe_modules/pgo/resources/run_benchmark.py

Issue 2422373003: Revert of Use the Chromium-side script to run the PGO benchmarks. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: scripts/slave/recipe_modules/pgo/resources/run_benchmark.py
diff --git a/scripts/slave/recipe_modules/pgo/resources/run_benchmark.py b/scripts/slave/recipe_modules/pgo/resources/run_benchmark.py
new file mode 100644
index 0000000000000000000000000000000000000000..35782f0f0a283ee2ebac97e34802032bb2432a51
--- /dev/null
+++ b/scripts/slave/recipe_modules/pgo/resources/run_benchmark.py
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Run a profiling benchmark for a PGO build.
+
+This wrapper script is required so we can find the path to pgosweep.exe.
+"""
+
+import json
+import optparse
+import os
+import subprocess
+import sys
+
+
+def find_pgosweep(chrome_checkout_dir, target_bits):
+ """Find the directory containing pgosweep.exe."""
+ win_toolchain_json_file = os.path.join(chrome_checkout_dir, 'build',
+ 'win_toolchain.json')
+ if not os.path.exists(win_toolchain_json_file):
+ print 'The toolchain JSON file is missing.'
+ return
+ with open(win_toolchain_json_file) as temp_f:
+ toolchain_data = json.load(temp_f)
+ if not os.path.isdir(toolchain_data['path']):
+ print 'The toolchain JSON file is invalid.'
+ return
+
+ pgo_sweep_dir = os.path.join(toolchain_data['path'], 'VC', 'bin')
+ if target_bits == 64:
+ pgo_sweep_dir = os.path.join(pgo_sweep_dir, 'amd64')
+
+ if not os.path.exists(os.path.join(pgo_sweep_dir, 'pgosweep.exe')):
+ print 'pgosweep.exe is missing from %s.' % pgo_sweep_dir
+ return
+
+ return pgo_sweep_dir
+
+
+def main():
+ parser = optparse.OptionParser(usage='%prog [options]')
+ parser.add_option(
+ '--checkout-dir', help='The Chrome checkout directory.')
+ parser.add_option(
+ '--browser-type', help='The browser type (to be passed to Telemetry\'s '
+ 'benchmark runner).')
+ parser.add_option('--target-bits', help='The target\'s bitness.', type=int)
+ parser.add_option('--benchmark', help='The benchmark to run.')
+ parser.add_option('--build-dir', help='Chrome build directory.')
+ options, _ = parser.parse_args()
+
+ if not options.checkout_dir:
+ parser.error('--checkout-dir is required')
+ if not options.browser_type:
+ parser.error('--browser-type is required')
+ if not options.target_bits:
+ parser.error('--target-bits is required')
+ if not options.benchmark:
+ parser.error('--benchmark is required')
+ if not options.build_dir:
+ parser.error('--build-dir is required')
+
+ # Starts by finding the directory containing pgosweep.exe
+ pgo_sweep_dir = find_pgosweep(options.checkout_dir, options.target_bits)
+ if not pgo_sweep_dir:
+ return 1
+
+ # Then find the run_benchmark script.
+ chrome_run_benchmark_script = os.path.join(options.checkout_dir, 'tools',
+ 'perf', 'run_benchmark')
+ if not os.path.exists(chrome_run_benchmark_script):
+ print ('Unable to find the run_benchmark script (%s doesn\'t exist) ' %
+ chrome_run_benchmark_script)
+ return 1
+
+ # Augment the PATH to make sure that the benchmarking script can find
+ # pgosweep.exe and its runtime libraries.
+ env = os.environ.copy()
+ env['PATH'] = str(os.pathsep.join([pgo_sweep_dir, options.build_dir,
+ os.environ['PATH']]))
+ env['PogoSafeMode'] = '1'
+ # Apply a scaling factor of 0.5 to the PGO profiling buffers for the 32-bit
+ # builds, without this the buffers will be too large and the process will
+ # fail to start. See crbug.com/632864#c22.
+ if options.target_bits == 32:
+ env['VCPROFILE_ALLOC_SCALE'] = '0.5'
+
+ benchmark_command = [
+ sys.executable,
+ chrome_run_benchmark_script,
+ '--browser', options.browser_type,
+ '--profiler', 'win_pgo_profiler',
+ options.benchmark
+ ]
+ return subprocess.call(benchmark_command, env=env)
+
+
+if __name__ == '__main__':
+ sys.exit(main())

Powered by Google App Engine
This is Rietveld 408576698