summaryrefslogtreecommitdiff
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
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>
-rwxr-xr-xautomated/linux/sysbench/sysbench.sh8
-rw-r--r--automated/linux/sysbench/sysbench.yaml2
2 files changed, 9 insertions, 1 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
diff --git a/automated/linux/sysbench/sysbench.yaml b/automated/linux/sysbench/sysbench.yaml
index 1bceee4..4b44942 100644
--- a/automated/linux/sysbench/sysbench.yaml
+++ b/automated/linux/sysbench/sysbench.yaml
@@ -31,7 +31,7 @@ params:
# "${TESTS}" could be one or more of the following tests.
# TESTS: cpu memory threads mutex fileio oltp
# TESTS: "oltp"
- TESTS: "cpu memory threads mutex fileio"
+ TESTS: "percpu cpu memory threads mutex fileio"
# Number of threads to use.
NUM_THREADS: "1"
SKIP_INSTALL: "false"