| #!/bin/bash |
| # SPDX-License-Identifier: GPL-2.0+ or MIT |
| |
| NR_CPUS=`grep '^processor' /proc/cpuinfo | wc -l` |
| |
| EXTRA_ARGS=${@} |
| |
| OLDIFS="$IFS" |
| IFS=$'\n' |
| TEST_LIST=( |
| "-T s" |
| "-T l" |
| "-T b" |
| "-T b -M" |
| "-T m" |
| "-T m -M" |
| "-T i" |
| "-T r" |
| ) |
| |
| TEST_NAME=( |
| "spinlock" |
| "list" |
| "buffer" |
| "buffer with barrier" |
| "memcpy" |
| "memcpy with barrier" |
| "increment" |
| "membarrier" |
| ) |
| IFS="$OLDIFS" |
| |
| REPS=1000 |
| SLOW_REPS=100 |
| NR_THREADS=$((6*${NR_CPUS})) |
| |
| function do_tests() |
| { |
| local i=0 |
| while [ "$i" -lt "${#TEST_LIST[@]}" ]; do |
| echo "Running test ${TEST_NAME[$i]}" |
| ./param_test ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 |
| echo "Running compare-twice test ${TEST_NAME[$i]}" |
| ./param_test_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 |
| |
| echo "Running mm_cid test ${TEST_NAME[$i]}" |
| ./param_test_mm_cid ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 |
| echo "Running mm_cid compare-twice test ${TEST_NAME[$i]}" |
| ./param_test_mm_cid_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 |
| let "i++" |
| done |
| } |
| |
| echo "Default parameters" |
| do_tests |
| |
| echo "Loop injection: 10000 loops" |
| |
| OLDIFS="$IFS" |
| IFS=$'\n' |
| INJECT_LIST=( |
| "1" |
| "2" |
| "3" |
| "4" |
| "5" |
| "6" |
| "7" |
| "8" |
| "9" |
| ) |
| IFS="$OLDIFS" |
| |
| NR_LOOPS=10000 |
| |
| i=0 |
| while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do |
| echo "Injecting at <${INJECT_LIST[$i]}>" |
| do_tests -${INJECT_LIST[i]} ${NR_LOOPS} |
| let "i++" |
| done |
| NR_LOOPS= |
| |
| function inject_blocking() |
| { |
| OLDIFS="$IFS" |
| IFS=$'\n' |
| INJECT_LIST=( |
| "7" |
| "8" |
| "9" |
| ) |
| IFS="$OLDIFS" |
| |
| NR_LOOPS=-1 |
| |
| i=0 |
| while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do |
| echo "Injecting at <${INJECT_LIST[$i]}>" |
| do_tests -${INJECT_LIST[i]} -1 ${@} |
| let "i++" |
| done |
| NR_LOOPS= |
| } |
| |
| echo "Yield injection (25%)" |
| inject_blocking -m 4 -y |
| |
| echo "Yield injection (50%)" |
| inject_blocking -m 2 -y |
| |
| echo "Yield injection (100%)" |
| inject_blocking -m 1 -y |
| |
| echo "Kill injection (25%)" |
| inject_blocking -m 4 -k |
| |
| echo "Kill injection (50%)" |
| inject_blocking -m 2 -k |
| |
| echo "Kill injection (100%)" |
| inject_blocking -m 1 -k |
| |
| echo "Sleep injection (1ms, 25%)" |
| inject_blocking -m 4 -s 1 |
| |
| echo "Sleep injection (1ms, 50%)" |
| inject_blocking -m 2 -s 1 |
| |
| echo "Sleep injection (1ms, 100%)" |
| inject_blocking -m 1 -s 1 |