diff options
Diffstat (limited to 'yardstick/benchmark/scenarios/compute/perf_benchmark.bash')
-rw-r--r-- | yardstick/benchmark/scenarios/compute/perf_benchmark.bash | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/yardstick/benchmark/scenarios/compute/perf_benchmark.bash b/yardstick/benchmark/scenarios/compute/perf_benchmark.bash new file mode 100644 index 000000000..5ae107a52 --- /dev/null +++ b/yardstick/benchmark/scenarios/compute/perf_benchmark.bash @@ -0,0 +1,68 @@ +#!/bin/sh + +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +set -e + +# Commandline arguments +PAYLOAD_OP=$1 +shift +DURATION=$1 +shift +EVENTS=("$@") +OUTPUT_FILE=/tmp/perfout.txt + +# run perf test +run_perf() +{ + COMMA_SEP_E=$( IFS=$','; echo "${EVENTS[*]}" ) + + if [[ $PAYLOAD_OP == dd* ]] + then + sudo perf stat -o $OUTPUT_FILE -e ${COMMA_SEP_E[@]} $PAYLOAD_OP & + sleep $DURATION + sudo killall -q -u root dd + else + sudo perf stat -o $OUTPUT_FILE -e ${COMMA_SEP_E[@]} $PAYLOAD_OP + fi +} + +# write the result to stdout in json format +output_json() +{ + EVENTS+=('time') + + last_pos=$(( ${#EVENTS[*]} - 1 )) + last=${EVENTS[$last_pos]} + + echo -n { + for EVENT in ${EVENTS[@]} + do + value=$(cat $OUTPUT_FILE | grep $EVENT | awk 'match($0,/[0-9]+|[0-9]+\.[0-9]*/, a) { print a[0]}') + + if [[ $EVENT != $last ]] + then + echo -n \"$EVENT\": $value, + else + echo -n \"$EVENT\": $value + fi + done + echo } +} + +# main entry +main() +{ + run_perf > /dev/null 2>&1 + sleep 1 + output_json +} + +main |