v8/tools/run-perf.sh
leszeks fdc277e645 [tools] run-perf: ensure command line arguments are prepended
This change to run-perf.sh ensures that command line arguments are
prepended rather than appended to the passed in command. This is to
ensure that the arguments to d8 aren't accidentally passed through to
the js instead, as would be in the case:

tools/run-perf.sh d8 main.js -- --js-arg

A real-life example is passing --predictable to Octane's run.js

Review-Url: https://codereview.chromium.org/2391193003
Cr-Commit-Position: refs/heads/master@{#39999}
2016-10-05 15:15:38 +00:00

59 lines
1.6 KiB
Bash
Executable File

#! /bin/sh
#
# Copyright 2016 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
########## Global variable definitions
# Ensure that <your CPU clock> / $SAMPLE_EVERY_N_CYCLES < $MAXIMUM_SAMPLE_RATE.
MAXIMUM_SAMPLE_RATE=10000000
SAMPLE_EVERY_N_CYCLES=10000
SAMPLE_RATE_CONFIG_FILE="/proc/sys/kernel/perf_event_max_sample_rate"
KERNEL_MAP_CONFIG_FILE="/proc/sys/kernel/kptr_restrict"
CALL_GRAPH_METHOD="fp" # dwarf does not play nice with JITted objects.
EVENT_TYPE=${EVENT_TYPE:=cycles:u}
########## Usage
usage() {
cat << EOF
usage: $0 <benchmark_command>
Executes <benchmark_command> under observation by Linux perf.
Sampling event is cycles in user space, call graphs are recorded.
EOF
}
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] ; then
usage
exit 1
fi
########## Actual script execution
ACTUAL_SAMPLE_RATE=$(cat $SAMPLE_RATE_CONFIG_FILE)
if [ "$ACTUAL_SAMPLE_RATE" -lt "$MAXIMUM_SAMPLE_RATE" ] ; then
echo "Setting appropriate maximum sample rate..."
echo $MAXIMUM_SAMPLE_RATE | sudo tee $SAMPLE_RATE_CONFIG_FILE
fi
ACTUAL_KERNEL_MAP_RESTRICTION=$(cat $KERNEL_MAP_CONFIG_FILE)
if [ "$ACTUAL_KERNEL_MAP_RESTRICTION" -ne "0" ] ; then
echo "Disabling kernel address map restriction..."
echo 0 | sudo tee $KERNEL_MAP_CONFIG_FILE
fi
# Extract the command being perfed, so that we can prepend arguments to the
# arguments that the user supplied.
COMMAND=$1
shift 1
echo "Running..."
perf record -R \
-e $EVENT_TYPE \
-c $SAMPLE_EVERY_N_CYCLES \
--call-graph $CALL_GRAPH_METHOD \
-i "$COMMAND" --perf_basic_prof "$@"