diff options
author | Martin Peres <martin.peres@linux.intel.com> | 2015-09-24 15:17:18 +0300 |
---|---|---|
committer | Martin Peres <martin.peres@linux.intel.com> | 2015-10-06 16:01:44 +0300 |
commit | 8d4425249f4f7613b8a0198cd184ee059b81441a (patch) | |
tree | 09a89c97f63d06b634e84c17b784ef76e09d6ba0 | |
parent | 8bc24d8d54927bb9d93165b656d7fa7930639c43 (diff) |
core: introduce a run_bench function that handles running the benchmarks
This function is overridable in the profile folders. Some tests still rely on
sudo to run. This may be an hindrance when adding support for environment
parsing.
26 files changed, 43 insertions, 38 deletions
@@ -46,6 +46,15 @@ ezBenchDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) # initial cleanup mkdir "$ezBenchDir/logs" 2> /dev/null +# set the default run_bench function which can be overriden by the profiles: +# Arguments: $1 : timeout (set to 0 for infinite wait) +# $2+: command line executing the test AND NOTHING ELSE! +function run_bench { + timeout=$1 + shift + eval "vblank_mode=0 stdbuf -oL timeout $timeout "$@"" +} + # parse the options function available_tests { # Generate the list of available tests diff --git a/tests.d/beignet/finance.test b/tests.d/beignet/finance.test index 32c1872..7ca3f22 100644 --- a/tests.d/beignet/finance.test +++ b/tests.d/beignet/finance.test @@ -19,7 +19,7 @@ test -d ${FINANCEBENCH_FOLDER} || return 1 __finance__() { cd $(dirname $2) for (( c=0; c<$1; c++ )); do - ./$(basename $2) | sed '/Processing time/!d; s/.*://' || return 1 + run_bench 0 ./$(basename $2) | sed '/Processing time/!d; s/.*://' || return 1 done } diff --git a/tests.d/beignet/luxmark.test b/tests.d/beignet/luxmark.test index eb20fb9..3832620 100644 --- a/tests.d/beignet/luxmark.test +++ b/tests.d/beignet/luxmark.test @@ -4,7 +4,7 @@ __luxmark__() { cd $LUXMARK_FOLDER # set me in test_options.sh! for (( c=0; c<$1; c++ )); do LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH \ - ./luxmark.bin --single-run --mode=BENCHMARK_OCL_GPU --scene=$2 \ + run_bench 0 ./luxmark.bin --single-run --mode=BENCHMARK_OCL_GPU --scene=$2 \ | awk '{print $2 }' || return 1 done } diff --git a/tests.d/beignet/polybench.test b/tests.d/beignet/polybench.test index bcd545a..268f38a 100644 --- a/tests.d/beignet/polybench.test +++ b/tests.d/beignet/polybench.test @@ -14,7 +14,7 @@ test -d ${POLYBENCH_ACC_FOLDER}/OpenCL || return 1 __polybench__() { cd $(dirname $2) for (( c=0; c<$1; c++ )); do - ./$(basename $2) | tail -n 1 || return 1 + run_bench 0 ./$(basename $2) | tail -n 1 || return 1 done } diff --git a/tests.d/gem/gem_create.test b/tests.d/gem/gem_create.test index cd296fb..cb5d2aa 100644 --- a/tests.d/gem/gem_create.test +++ b/tests.d/gem/gem_create.test @@ -4,5 +4,5 @@ test_exec_time=2 sudo -n true || return 1 test_name="gem:create:4k gem:create:4M" -gem:create:4k_run() { sudo $IGT_BENCHMARKS/gem_create -s 4096 -r $1; } -gem:create:4M_run() { sudo $IGT_BENCHMARKS/gem_create -s 4194304 -r $1; } +gem:create:4k_run() { run_bench 0 sudo $IGT_BENCHMARKS/gem_create -s 4096 -r $1; } +gem:create:4M_run() { run_bench 0 sudo $IGT_BENCHMARKS/gem_create -s 4194304 -r $1; } diff --git a/tests.d/gem/gem_exec_ctx.test b/tests.d/gem/gem_exec_ctx.test index e334a57..f99e5cb 100644 --- a/tests.d/gem/gem_exec_ctx.test +++ b/tests.d/gem/gem_exec_ctx.test @@ -10,7 +10,7 @@ sudo -n true || return 1 for i in nop switch create; do name="gem:exec:ctx:$i" test_name="$test_name $name" - eval "${name}_run() { sudo $IGT_BENCHMARKS/gem_exec_ctx -b $i -r \$1; }" + eval "${name}_run() { run_bench 0 sudo $IGT_BENCHMARKS/gem_exec_ctx -b $i -r \$1; }" eval "${name}_process() { bc -l <<< \"1000000 / \${@: -1}\"; }" done diff --git a/tests.d/gem/gem_exec_nop.test b/tests.d/gem/gem_exec_nop.test index d3ad7c6..be1682e 100644 --- a/tests.d/gem/gem_exec_nop.test +++ b/tests.d/gem/gem_exec_nop.test @@ -13,5 +13,5 @@ test_exec_time=18 [ -e $IGT_BENCHMARKS/gem_exec_nop ] || return 1 sudo -n true || return 1 -gem:exec:nop_run() { sudo $IGT_BENCHMARKS/gem_exec_nop -e 1 -r $1; } +gem:exec:nop_run() { run_bench 0 sudo $IGT_BENCHMARKS/gem_exec_nop -e 1 -r $1; } gem:exec:nop_process() { bc -l <<< "1000000 / ${@: -1}"; } diff --git a/tests.d/gem/gem_exec_reloc.test b/tests.d/gem/gem_exec_reloc.test index 525b506..ef75dde 100644 --- a/tests.d/gem/gem_exec_reloc.test +++ b/tests.d/gem/gem_exec_reloc.test @@ -9,10 +9,10 @@ for i in old lut; do for k in constant sequential reverse random; do for b in 2 4096; do test_name="$test_name gem:exec:reloc:$i:$j:$k:$b" - eval "gem:exec:reloc:${i}:${j}:${k}:${b}_run() { sudo $IGT_BENCHMARKS/gem_exec_reloc -s 65536 -m $i -e $j -o $k -l \$1 -b $b -r 4096 ; } " + eval "gem:exec:reloc:${i}:${j}:${k}:${b}_run() { run_bench 0 sudo $IGT_BENCHMARKS/gem_exec_reloc -s 65536 -m $i -e $j -o $k -l \$1 -b $b -r 4096 ; } " done done done test_name="$test_name gem:exec:reloc:$i:0:8192" - eval "gem:exec:reloc:${i}:0:8192_run() { sudo $IGT_BENCHMARKS/gem_exec_reloc -s 4096 -m $i -e none -o constant -l \$1 -b 8192 -r 0 ; } " + eval "gem:exec:reloc:${i}:0:8192_run() { run_bench 0 sudo $IGT_BENCHMARKS/gem_exec_reloc -s 4096 -m $i -e none -o constant -l \$1 -b 8192 -r 0 ; } " done diff --git a/tests.d/gem/gem_exec_trace.test b/tests.d/gem/gem_exec_trace.test index 7bde22b..12e8de5 100644 --- a/tests.d/gem/gem_exec_trace.test +++ b/tests.d/gem/gem_exec_trace.test @@ -4,7 +4,7 @@ sudo -n true || return 1 function __trace__ { sudo $IGT_BENCHMARKS/gem_exec_trace $IGT_TRACES/$2.gem_exec_trace >/dev/null for (( c=0; c<$1; c++ )); do - sudo $IGT_BENCHMARKS/gem_exec_trace $IGT_TRACES/$2.gem_exec_trace | sed 's/.*: //' + run_bench 0 sudo $IGT_BENCHMARKS/gem_exec_trace $IGT_TRACES/$2.gem_exec_trace | sed 's/.*: //' done } diff --git a/tests.d/gem/gem_mmap.test b/tests.d/gem/gem_mmap.test index c87f449..05b7dd8 100644 --- a/tests.d/gem/gem_mmap.test +++ b/tests.d/gem/gem_mmap.test @@ -9,7 +9,7 @@ for i in cpu gtt wc; do for j in fault clear write read; do for k in none x y; do test_name="$test_name gem:mmap:$i:$j:$k" - eval "gem:mmap:${i}:${j}:${k}_run() { sudo $IGT_BENCHMARKS/gem_mmap -m $i -d $j -t $k -r \$1 ; } " + eval "gem:mmap:${i}:${j}:${k}_run() { run_bench 0 sudo $IGT_BENCHMARKS/gem_mmap -m $i -d $j -t $k -r \$1 ; } " eval "gem:mmap:${i}:${j}:${k}_process() { bc -l <<< \" 4*1000000 / \${@: -1} \" ; }" done diff --git a/tests.d/gem/gem_prw.test b/tests.d/gem/gem_prw.test index a2f4939..436fdce 100644 --- a/tests.d/gem/gem_prw.test +++ b/tests.d/gem/gem_prw.test @@ -12,7 +12,7 @@ sudo -n true || return 1 for j in read write; do for i in cpu gtt; do test_name="$test_name gem:p$j:$i" - eval "gem:p$j:${i}_run() { sudo $IGT_BENCHMARKS/gem_prw -D $j -d $i -r \$1 ; }" + eval "gem:p$j:${i}_run() { run_bench 0 sudo $IGT_BENCHMARKS/gem_prw -D $j -d $i -r \$1 ; }" eval "gem:p$j:${i}_process() { bc -l <<< \" 4*1000000 / \${@: -1} \" ; }" done done diff --git a/tests.d/internal/citybench.test b/tests.d/internal/citybench.test index 3e36c60..2f7b111 100644 --- a/tests.d/internal/citybench.test +++ b/tests.d/internal/citybench.test @@ -11,6 +11,6 @@ citybench_run() { for (( c=0; c<$1; c++ )) do - vblank_mode=0 taskset 1 $unbuf timeout $test_exec_time ./replay_GL_64 -f 1478 + run_bench $test_exec_time ./replay_GL_64 -f 1478 done | $unbuf grep fps | cut -d ' ' -f 1 } diff --git a/tests.d/internal/synmark.test b/tests.d/internal/synmark.test index 927f9d2..87e6881 100644 --- a/tests.d/internal/synmark.test +++ b/tests.d/internal/synmark.test @@ -2,21 +2,19 @@ test -e "$SYNMARK_FOLDER/synmark2" || return 1 function __synmark__ { cd $SYNMARK_FOLDER # Set this variable in test_options.sh - local unbuf="stdbuf -o L" for (( c=0; c<$1; c++ )) do - $unbuf ./synmark2 $2 | grep FPS | cut -d ' ' -f 2 + run_bench 0 ./synmark2 $2 | grep FPS | cut -d ' ' -f 2 done } function __cpu__ { cd /tmp # just in case synmark likes emitting stray output files - local unbuf="stdbuf -o L" for (( c=0; c<$1; c++ )) do - INTEL_NO_HW=1 $unbuf $SYNMARK_FOLDER/synmark2 $2 | grep FPS | cut -d ' ' -f 2 + INTEL_NO_HW=1 run_bench 0 $SYNMARK_FOLDER/synmark2 $2 | grep FPS | cut -d ' ' -f 2 done } diff --git a/tests.d/kms/vblank.test b/tests.d/kms/vblank.test index d50707c..0946453 100644 --- a/tests.d/kms/vblank.test +++ b/tests.d/kms/vblank.test @@ -5,7 +5,7 @@ for j in busy idle; do for i in query event; do name="kms:vblank:$i:$j" test_name="$test_name $name" - eval "${name}_run() { sudo $IGT_BENCHMARKS/kms_vblank -w $i -b $j -r \$1; }" + eval "${name}_run() { run_bench 0 sudo $IGT_BENCHMARKS/kms_vblank -w $i -b $j -r \$1; }" done done diff --git a/tests.d/mesa/UnrealEngine4.test b/tests.d/mesa/UnrealEngine4.test index 03ba9f0..6fd55f3 100644 --- a/tests.d/mesa/UnrealEngine4.test +++ b/tests.d/mesa/UnrealEngine4.test @@ -13,8 +13,7 @@ __ue4__() { rm -f /tmp/frametime.log LIBFRAMETIME_FILE=/tmp/frametime.log LD_PRELOAD=$LIBFRAMETIME64_SO \ - vblank_mode=0 $frametime taskset 1 timeout 60 \ - "$benchmark" -NOSOUND -BENCHMARK $5 > /dev/null + run_bench 60 \"$benchmark\" -NOSOUND -BENCHMARK $5 > /dev/null >&2 # read back the result, skip the first frames since they are the loading frames cat /tmp/frametime.log | awk '{if (++n > 10) {print 1000000/$2}}' > $2#$c diff --git a/tests.d/mesa/glbenchmark27.test b/tests.d/mesa/glbenchmark27.test index e46d0fc..7c8114b 100644 --- a/tests.d/mesa/glbenchmark27.test +++ b/tests.d/mesa/glbenchmark27.test @@ -15,7 +15,7 @@ function __gl27fullscreen__ { for (( c=0; c<$1; c++ )) do - ${GLB27} -data ${GLB27_DATA} -skip_load_frames \ + run_bench 0 ${GLB27} -data ${GLB27_DATA} -skip_load_frames \ -w $width -h $height -ow $W -oh $H -t $2 | \ sed '/fps/!d; s#.*: \(.*\) msec.*#1000000 / \1#' | bc -l done @@ -29,7 +29,7 @@ function __gl27window__ { for (( c=0; c<$1; c++ )) do - ${GLB27} -data ${GLB27_DATA} -skip_load_frames \ + run_bench 0 ${GLB27} -data ${GLB27_DATA} -skip_load_frames \ -w $(( $width / 2 )) -h $(( $height / 2 )) -ow $W -oh $H -t $2 | \ sed '/fps/!d; s#.*: \(.*\) msec.*#1000000 / \1#' | bc -l done @@ -42,7 +42,7 @@ function __gl27offscreen__ { for (( c=0; c<$1; c++ )) do - ${GLB27} -data ${GLB27_DATA} -skip_load_frames \ + run_bench 0 ${GLB27} -data ${GLB27_DATA} -skip_load_frames \ -w $W -h $H -ow $W -oh $H -t $2 | \ sed '/fps/!d; s#.*: \(.*\) msec.*#1000000 / \1#' | bc -l done @@ -52,7 +52,7 @@ function __gl27offscreen__ { function __gl27cpu__ { for (( c=0; c<$1; c++ )) do - INTEL_NO_HW=1 ${GLB27} -data ${GLB27_DATA} -skip_load_frames \ + INTEL_NO_HW=1 run_bench 0 ${GLB27} -data ${GLB27_DATA} -skip_load_frames \ -w 16 -h 16 -ow 16 -oh 16 -t $2 | \ sed '/fps/!d; s#.*: \(.*\) msec.*#1000000 / \1#' | bc -l done diff --git a/tests.d/mesa/glbenchmark30.test b/tests.d/mesa/glbenchmark30.test index 7ae6c8b..36ec7e4 100644 --- a/tests.d/mesa/glbenchmark30.test +++ b/tests.d/mesa/glbenchmark30.test @@ -59,7 +59,7 @@ function __gl30run__ { for (( c=0; c<$1; c++ )) do LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${GLBENCHMARK30_FOLDER}/build/linux/poco_Release/lib/ \ - vblank_mode=0 \ + run_bench 0 \ ./mainapp -data ${GLB30_DATA} -w $W -h $H -ow $W -oh $H -t $2 -fullscreen $3 |\ grep score | cut -d : -f 2- | cut -d " " -f 2 | cut -d ',' -f 1 done diff --git a/tests.d/mesa/glxgears.test b/tests.d/mesa/glxgears.test index 668463d..486eeaf 100644 --- a/tests.d/mesa/glxgears.test +++ b/tests.d/mesa/glxgears.test @@ -10,7 +10,7 @@ __glxgears__() { for (( c=$4; c<$2+$4; c++ )) do - vblank_mode=0 $unbuf taskset 1 timeout 21 \ + run_bench 21 \ glxgears $1 2> /dev/null | eval $extract_fps > $3#$c awk '{sum=sum+$1} END {print sum/NR}' $3#$c done @@ -38,10 +38,10 @@ glxgears16_run() { for (( c=$3; c<$1+$3; c++ )); do for (( n=0; n<15; n++ )); do - vblank_mode=0 timeout 25 glxgears >&/dev/null 2>/dev/null & + timeout 25 glxgears >&/dev/null 2>/dev/null & done - vblank_mode=0 $unbuf timeout 21 \ + run_bench 21 \ glxgears 2> /dev/null | eval $extract_fps > $2#$c awk '{sum=sum+$1} END {print sum/NR}' $2#$c diff --git a/tests.d/mesa/gputest.test b/tests.d/mesa/gputest.test index c4bbf8a..fd69a5d 100644 --- a/tests.d/mesa/gputest.test +++ b/tests.d/mesa/gputest.test @@ -14,7 +14,7 @@ __gputest__() { echo ./GpuTest /test=$3 $benchmark $5 >> /tmp/gputest LIBFRAMETIME_FILE=/tmp/frametime.log LD_PRELOAD=$LIBFRAMETIME64_SO \ - ./GpuTest /test=$4 $benchmark $5 > /dev/null || return 1 + run_bench 0 ./GpuTest /test=$4 $benchmark $5 > /dev/null || return 1 # read back the result, skip the first frames since they are the loading frames cat /tmp/frametime.log | awk '{if (++n > 10) {print 1000000/$2}}' > $2#$c diff --git a/tests.d/mesa/lightsmark.test b/tests.d/mesa/lightsmark.test index 9f76bb8..fb734f9 100644 --- a/tests.d/mesa/lightsmark.test +++ b/tests.d/mesa/lightsmark.test @@ -15,7 +15,7 @@ lightsmark_run() { cd $LIGHTSMARK_FOLDER/bin/pc-linux64 for (( c=$3; c<$1+$3; c++ )); do - vblank_mode=0 LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./backend silent 1920x1080 | eval $extract_fps + LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH run_bench 0 ./backend silent 1920x1080 | eval $extract_fps done } diff --git a/tests.d/mesa/unigine-heaven.test b/tests.d/mesa/unigine-heaven.test index 974e31d..051c7de 100644 --- a/tests.d/mesa/unigine-heaven.test +++ b/tests.d/mesa/unigine-heaven.test @@ -12,7 +12,7 @@ unigine:heaven_run() { LIBFRAMETIME_FILE=/tmp/frametime.log LD_PRELOAD=$LIBFRAMETIME64_SO \ LD_LIBRARY_PATH=bin:bin/x64:$LD_LIBRARY_PATH \ - vblank_mode=0 taskset 1 \ + run_bench 0 \ ./bin/heaven_x64 \ -video_app opengl \ -data_path ../ \ diff --git a/tests.d/mesa/unigine-valley.test b/tests.d/mesa/unigine-valley.test index ce66b6e..edb5e1a 100644 --- a/tests.d/mesa/unigine-valley.test +++ b/tests.d/mesa/unigine-valley.test @@ -14,7 +14,7 @@ unigine:valley_run() { LD_LIBRARY_PATH=bin:bin/x64:$LD_LIBRARY_PATH \ MESA_EXTENSION_OVERRIDE="-GL_ARB_sample_shading -GL_ARB_blend_func_extended" \ MESA_GL_VERSION_OVERRIDE="3.2" \ - vblank_mode=0 taskset 1 \ + run_bench 0 \ ./bin/valley_x64 \ -video_app opengl \ -data_path ../ \ diff --git a/tests.d/mesa/xonotic.test b/tests.d/mesa/xonotic.test index 8069463..7b03ad3 100644 --- a/tests.d/mesa/xonotic.test +++ b/tests.d/mesa/xonotic.test @@ -3,12 +3,11 @@ test -e "$XONOTIC_FOLDER/xonotic-sdl" || return 1 # 1 argument: $rounds __xonotic__() { # 10510 frames 24.7782191 seconds 424.1628480 fps, one-second fps min/avg/max: 57 1352 7027 (336 seconds) - local unbuf="stdbuf -oL" local extract_fps="egrep -e '[0-9]+ frames' | cut -d ' ' -f 5 2> /dev/null" for (( c=0; c<$1; c++ )) do - vblank_mode=0 $unbuf taskset 1 \ + run_bench 0 \ $XONOTIC_FOLDER/xonotic-sdl -benchmark demos/the-big-keybench | eval $extract_fps done } diff --git a/tests.d/x11/cairo-demos.test b/tests.d/x11/cairo-demos.test index ee84677..155d100 100644 --- a/tests.d/x11/cairo-demos.test +++ b/tests.d/x11/cairo-demos.test @@ -9,7 +9,7 @@ xdpyinfo >/dev/null 2>&1 || return 1 function __xlib__ { cd $CAIRO_DEMOS for (( c=0; c<$1; c++ )); do - timeout 20 ./$2-demo --benchmark --xlib | sed -e '/fps/!d; s/.*: \(.*\) fps.*/\1/' + run_bench 20 ./$2-demo --benchmark --xlib | sed -e '/fps/!d; s/.*: \(.*\) fps.*/\1/' done } diff --git a/tests.d/x11/swap.test b/tests.d/x11/swap.test index 260d4ca..98bbf47 100644 --- a/tests.d/x11/swap.test +++ b/tests.d/x11/swap.test @@ -2,13 +2,13 @@ xdpyinfo >/dev/null 2>&1 || return 1 function __dri2__ { for (( c=0; c<$1; c++)); do - $XF86_VIDEO_INTEL/benchmarks/dri2-swap -d $2 -v $3 -w $4 + run_bench 0 $XF86_VIDEO_INTEL/benchmarks/dri2-swap -d $2 -v $3 -w $4 done } function __dri3__ { for (( c=0; c<$1; c++)); do - $XF86_VIDEO_INTEL/benchmarks/dri3-swap -d $2 -v $3 -w $4 + run_bench 0 $XF86_VIDEO_INTEL/benchmarks/dri3-swap -d $2 -v $3 -w $4 done } diff --git a/tests.d/x11/x11perf.test b/tests.d/x11/x11perf.test index 1713296..fcc1406 100644 --- a/tests.d/x11/x11perf.test +++ b/tests.d/x11/x11perf.test @@ -4,7 +4,7 @@ which x11perf >/dev/null 2>&1 || return 1 xdpyinfo >/dev/null 2>&1 || return 1 function __x11perf__ { - x11perf -time 10 -repeat $1 $2 | sed -e '/reps/!d; s#.*(\(.*\)/sec.*#\1#' + run_bench 0 x11perf -time 10 -repeat $1 $2 | sed -e '/reps/!d; s#.*(\(.*\)/sec.*#\1#' } x11perf_help=$(x11perf --help 2>&1) |