summaryrefslogtreecommitdiff
path: root/automated/linux/sysbench/sysbench.sh
diff options
context:
space:
mode:
authorNicolas Dechesne <nicolas.dechesne@linaro.org>2017-05-15 17:46:31 +0200
committerNicolas Dechesne <nicolas.dechesne@linaro.org>2017-05-15 18:00:32 +0200
commit80d02bde9809db703b4380eb620f8943c63e99f5 (patch)
tree471aaf156aec46e0cb138e941e1b005f465b63e9 /automated/linux/sysbench/sysbench.sh
parent85cdee435e5a53b17979f68dc60439be82bf359a (diff)
automated: sysbench: add percpu benchmark
On multi core platforms, running 'sysbench --test=cpu' is not deterministic, since we cannot guarantee on which CPU the test is being run. It is even more problematic on big little platforms. In order for sysbench to be useful, we need to run sysbench 'cpu' benchmarks in the following conditions: 1. with --num-thread=<number of cpu> 2. with --num-thread=1 , for each cpu , using task affinity So that we can benchmark the platform as a whole, and each CPU individually. This patch adds a specific 'percpu' mode that takes care of #2 above. For #1, I would be in favor of removing NUMBER_THREADS as a params, or at least set it to <number of CPU> by default, but this is not done in this patch. A tweak in general_parser() was needed to add the cpu ID to the test name, running the test with 'percpu cpu' as PARAMS gives the following output: sysbench,percpu0-total-time,pass,9.2697,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu0-total-number-of-events,pass,10000,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu0-total-time-taken-by-event-execution,pass,9.2674,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu0-response-time-min,pass,0.84,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu0-response-time-avg,pass,0.93,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu0-response-time-max,pass,6.10,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu0-response-time-approx,pass,1.12,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu0-events-avg/stddev,pass,10000.0000/0.00,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu0-execution-time-avg/stddev,pass,9.2674/0.00,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-total-time,pass,9.9461,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-total-number-of-events,pass,10000,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-total-time-taken-by-event-execution,pass,9.9425,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-response-time-min,pass,0.84,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-response-time-avg,pass,0.99,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-response-time-max,pass,4.46,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-response-time-approx,pass,1.23,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-events-avg/stddev,pass,10000.0000/0.00,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu1-execution-time-avg/stddev,pass,9.9425/0.00,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-total-time,pass,9.4700,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-total-number-of-events,pass,10000,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-total-time-taken-by-event-execution,pass,9.4663,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-response-time-min,pass,0.84,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-response-time-avg,pass,0.95,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-response-time-max,pass,1.78,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-response-time-approx,pass,1.12,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-events-avg/stddev,pass,10000.0000/0.00,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu2-execution-time-avg/stddev,pass,9.4663/0.00,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-total-time,pass,9.4429,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-total-number-of-events,pass,10000,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-total-time-taken-by-event-execution,pass,9.4406,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-response-time-min,pass,0.84,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-response-time-avg,pass,0.94,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-response-time-max,pass,3.67,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-response-time-approx,pass,1.09,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-events-avg/stddev,pass,10000.0000/0.00,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,percpu3-execution-time-avg/stddev,pass,9.4406/0.00,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-total-time,pass,9.8187,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-total-number-of-events,pass,10000,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-total-time-taken-by-event-execution,pass,9.8148,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-response-time-min,pass,0.84,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-response-time-avg,pass,0.98,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-response-time-max,pass,8.63,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-response-time-approx,pass,1.16,ms,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-events-avg/stddev,pass,10000.0000/0.00,times,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false sysbench,cpu-execution-time-avg/stddev,pass,9.8148/0.00,s,NUM_THREADS=1;TESTS=percpu cpu;SKIP_INSTALL=false Change-Id: I25b10f0b5f1f5083e82b813b10e9ddd0ae184033 Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
Diffstat (limited to 'automated/linux/sysbench/sysbench.sh')
-rwxr-xr-xautomated/linux/sysbench/sysbench.sh8
1 files changed, 8 insertions, 0 deletions
diff --git a/automated/linux/sysbench/sysbench.sh b/automated/linux/sysbench/sysbench.sh
index 8a00613..dc60fd2 100755
--- a/automated/linux/sysbench/sysbench.sh
+++ b/automated/linux/sysbench/sysbench.sh
@@ -90,6 +90,8 @@ fi
sysbench --version
general_parser() {
+ # if $1 is there, let's append to test name in the result file
+ local tc="$tc$1"
ms=$(grep -m 1 "total time" "${logfile}" | awk '{print substr($NF,1,length($NF)-1)}')
add_metric "${tc}-total-time" "pass" "${ms}" "s"
@@ -117,6 +119,12 @@ for tc in ${TESTS}; do
info_msg "Running sysbench ${tc} test..."
logfile="${OUTPUT}/sysbench-${tc}.txt"
case "${tc}" in
+ percpu)
+ for i in $(cat /proc/cpuinfo | awk '/^processor/{print $3}'); do
+ taskset -c $i sysbench --num-threads=1 --test=cpu run | tee "${logfile}"
+ general_parser $i
+ done
+ ;;
cpu|threads|mutex)
sysbench --num-threads="${NUM_THREADS}" --test="${tc}" run | tee "${logfile}"
general_parser