diff options
author | Nicolas Dechesne <nicolas.dechesne@linaro.org> | 2017-05-15 17:46:31 +0200 |
---|---|---|
committer | Nicolas Dechesne <nicolas.dechesne@linaro.org> | 2017-05-15 18:00:32 +0200 |
commit | 80d02bde9809db703b4380eb620f8943c63e99f5 (patch) | |
tree | 471aaf156aec46e0cb138e941e1b005f465b63e9 | |
parent | 85cdee435e5a53b17979f68dc60439be82bf359a (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-x | automated/linux/sysbench/sysbench.sh | 8 | ||||
-rw-r--r-- | automated/linux/sysbench/sysbench.yaml | 2 |
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" |