aboutsummaryrefslogtreecommitdiff
path: root/crosperf/experiment_files/telemetry_perf_perf
diff options
context:
space:
mode:
Diffstat (limited to 'crosperf/experiment_files/telemetry_perf_perf')
-rwxr-xr-xcrosperf/experiment_files/telemetry_perf_perf77
1 files changed, 77 insertions, 0 deletions
diff --git a/crosperf/experiment_files/telemetry_perf_perf b/crosperf/experiment_files/telemetry_perf_perf
new file mode 100755
index 00000000..acdf96d0
--- /dev/null
+++ b/crosperf/experiment_files/telemetry_perf_perf
@@ -0,0 +1,77 @@
+#!/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/'
+