You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.4 KiB
77 lines
2.4 KiB
#!/bin/bash |
|
# Copyright 2016 The Chromium OS Authors. All rights reserved. |
|
# Use of this source code is governed by a BSD-style license that can be |
|
# found in the LICENSE file. |
|
# |
|
# Script for generating and running telemetry benchmarkes via crosperf with |
|
# different perf command lines in order to measure the impact of the perf |
|
# commands on performance. Crosperf cannot run the same benchmark multiple |
|
# times, so this script runs crosperf multpilpe times instead. Unfortunately, |
|
# this means you must compare the results yourself. |
|
# |
|
# Perf will run for the entire benchmark run, so results should be interpreted |
|
# in that context. i.e, if this shows a 3% overhead for a particular perf |
|
# command, that overhead would only be seen during the 2 seconds of measurement |
|
# during a Chrome OS Wide Profiling collection. |
|
set -e |
|
|
|
board=xxx #<you-board-here> |
|
remote=xxx #<your-remote-here> |
|
iterations=5 |
|
chromeos_root=~/chromiumos |
|
chrome_src=~/chromium |
|
|
|
|
|
function GenerateExperiment() { |
|
local perf_args="${1:+perf_args: $1}" |
|
local track="$2" # stable, beta, dev |
|
|
|
cat <<_EOF |
|
$perf_args |
|
benchmark: page_cycler_v2.typical_25 { |
|
suite: telemetry_Crosperf |
|
} |
|
|
|
$track { |
|
build: latest-$track |
|
} |
|
_EOF |
|
} |
|
|
|
function RunExperiment() { |
|
local name="$1" |
|
local perf_command="$2" |
|
GenerateExperiment "$perf_command" "stable" > /tmp/crosperf.exp |
|
./crosperf /tmp/crosperf.exp \ |
|
--name telemetry_perf_perf_${name} \ |
|
--board="${board}" \ |
|
--remote="${remote}" \ |
|
--iterations="${iterations}" \ |
|
--chromeos_root="${chromeos_root}" \ |
|
--chrome_src="${chrome_src}" \ |
|
--rerun=true \ |
|
--use_file_locks=true \ |
|
--locks_dir=/tmp/crosperf.locks |
|
} |
|
|
|
if [ "$board" = "xxx" -o "$remote" = "xxx" ]; then |
|
echo "Please set board and remote at the top of this script before running." |
|
exit -1 |
|
fi |
|
|
|
|
|
# Note that "-a" is automatically inserted in the perf command line. |
|
|
|
# Control: No profiling. |
|
RunExperiment 'control' '' |
|
# This is our baseline standard 'cycles' perf command. |
|
RunExperiment 'cycles.flat' \ |
|
'record -e cycles -c 1000003' |
|
# Callgraph profiling. |
|
RunExperiment 'cycles.callgraph' \ |
|
'record -g -e cycles -c 4000037' |
|
# Memory bandwidth profiling. As a perf stat command, we expect imperceptible |
|
# overhead. |
|
RunExperiment 'memory.bandwidth' \ |
|
'stat -e cycles -e instructions -e uncore_imc/data_reads/ -e uncore_imc/data_writes/ -e cpu/event=0xD0,umask=0x11,name=MEM_UOPS_RETIRED-STLB_MISS_LOADS/ -e cpu/event=0xD0,umask=0x12,name=MEM_UOPS_RETIRED-STLB_MISS_STORES/' |
|
|
|
|