| Index: tools/run-llprof.sh
|
| diff --git a/tools/check-static-initializers.sh b/tools/run-llprof.sh
|
| similarity index 57%
|
| copy from tools/check-static-initializers.sh
|
| copy to tools/run-llprof.sh
|
| index 1103a9778775dc86e8b59ee4f804670192533f70..d526170d1fab95798ce7380e1fcd87689e5b52cb 100755
|
| --- a/tools/check-static-initializers.sh
|
| +++ b/tools/run-llprof.sh
|
| @@ -1,4 +1,5 @@
|
| -#!/bin/bash
|
| +#!/bin/sh
|
| +#
|
| # Copyright 2012 the V8 project authors. All rights reserved.
|
| # Redistribution and use in source and binary forms, with or without
|
| # modification, are permitted provided that the following conditions are
|
| @@ -26,38 +27,43 @@
|
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -# Checks that the number of compilation units having at least one static
|
| -# initializer in d8 matches the one defined below.
|
| -# Note that the project must be built with SCons before running this script.
|
| +########## Global variable definitions
|
|
|
| -# Allow:
|
| -# - _GLOBAL__I__ZN2v810LineEditor6first_E
|
| -# - _GLOBAL__I__ZN2v88internal32AtomicOps_Internalx86CPUFeaturesE
|
| -# - _GLOBAL__I__ZN2v88internal8ThreadId18highest_thread_id_E
|
| -expected_static_init_count=3
|
| +# 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"
|
|
|
| -v8_root=$(readlink -f $(dirname $BASH_SOURCE)/../)
|
| +########## Usage
|
|
|
| -if [ -n "$1" ] ; then
|
| - d8="${v8_root}/$1"
|
| -else
|
| - d8="${v8_root}/d8"
|
| -fi
|
| +usage() {
|
| +cat << EOF
|
| +usage: $0 <benchmark_command>
|
| +
|
| +Executes <benchmark_command> under observation by the kernel's "perf" \
|
| +framework, then calls the low level tick processor to analyze the results.
|
| +EOF
|
| +}
|
|
|
| -if [ ! -f "$d8" ]; then
|
| - echo "d8 binary not found: $d8"
|
| +if [ $# -eq 0 ] || [ "$1" == "-h" ] || [ "$1" == "--help" ] ; then
|
| + usage
|
| exit 1
|
| fi
|
|
|
| -static_inits=$(nm "$d8" | grep _GLOBAL_ | grep _I_ | awk '{ print $NF; }')
|
| +########## Actual script execution
|
|
|
| -static_init_count=$(echo "$static_inits" | wc -l)
|
| +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
|
|
|
| -if [ $static_init_count -gt $expected_static_init_count ]; then
|
| - echo "Too many static initializers."
|
| - echo "$static_inits"
|
| - exit 1
|
| -else
|
| - echo "Static initializer check passed ($static_init_count initializers)."
|
| - exit 0
|
| +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
|
| +
|
| +echo "Running benchmark..."
|
| +perf record -R -e cycles -c $SAMPLE_EVERY_N_CYCLES -f -i $@ --ll-prof
|
|
|