1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0+ or MIT 3 4NR_CPUS=`grep '^processor' /proc/cpuinfo | wc -l` 5 6EXTRA_ARGS=${@} 7 8OLDIFS="$IFS" 9IFS=$'\n' 10TEST_LIST=( 11 "-T s" 12 "-T l" 13 "-T b" 14 "-T b -M" 15 "-T m" 16 "-T m -M" 17 "-T i" 18 "-T r" 19) 20 21TEST_NAME=( 22 "spinlock" 23 "list" 24 "buffer" 25 "buffer with barrier" 26 "memcpy" 27 "memcpy with barrier" 28 "increment" 29 "membarrier" 30) 31IFS="$OLDIFS" 32 33REPS=1000 34SLOW_REPS=100 35NR_THREADS=$((6*${NR_CPUS})) 36 37function do_tests() 38{ 39 local i=0 40 while [ "$i" -lt "${#TEST_LIST[@]}" ]; do 41 echo "Running test ${TEST_NAME[$i]}" 42 ./param_test ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 43 echo "Running compare-twice test ${TEST_NAME[$i]}" 44 ./param_test_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 45 46 echo "Running mm_cid test ${TEST_NAME[$i]}" 47 ./param_test_mm_cid ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 48 echo "Running mm_cid compare-twice test ${TEST_NAME[$i]}" 49 ./param_test_mm_cid_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 50 51 echo "Running mm_numa_cid test ${TEST_NAME[$i]}" 52 ./param_test_mm_numa_cid ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 53 echo "Running mm_numa_cid compare-twice test ${TEST_NAME[$i]}" 54 ./param_test_mm_numa_cid_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1 55 let "i++" 56 done 57} 58 59echo "Default parameters" 60do_tests 61 62echo "Loop injection: 10000 loops" 63 64OLDIFS="$IFS" 65IFS=$'\n' 66INJECT_LIST=( 67 "1" 68 "2" 69 "3" 70 "4" 71 "5" 72 "6" 73 "7" 74 "8" 75 "9" 76) 77IFS="$OLDIFS" 78 79NR_LOOPS=10000 80 81i=0 82while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do 83 echo "Injecting at <${INJECT_LIST[$i]}>" 84 do_tests -${INJECT_LIST[i]} ${NR_LOOPS} 85 let "i++" 86done 87NR_LOOPS= 88 89function inject_blocking() 90{ 91 OLDIFS="$IFS" 92 IFS=$'\n' 93 INJECT_LIST=( 94 "7" 95 "8" 96 "9" 97 ) 98 IFS="$OLDIFS" 99 100 NR_LOOPS=-1 101 102 i=0 103 while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do 104 echo "Injecting at <${INJECT_LIST[$i]}>" 105 do_tests -${INJECT_LIST[i]} -1 ${@} 106 let "i++" 107 done 108 NR_LOOPS= 109} 110 111echo "Yield injection (25%)" 112inject_blocking -m 4 -y 113 114echo "Yield injection (50%)" 115inject_blocking -m 2 -y 116 117echo "Yield injection (100%)" 118inject_blocking -m 1 -y 119 120echo "Kill injection (25%)" 121inject_blocking -m 4 -k 122 123echo "Kill injection (50%)" 124inject_blocking -m 2 -k 125 126echo "Kill injection (100%)" 127inject_blocking -m 1 -k 128 129echo "Sleep injection (1ms, 25%)" 130inject_blocking -m 4 -s 1 131 132echo "Sleep injection (1ms, 50%)" 133inject_blocking -m 2 -s 1 134 135echo "Sleep injection (1ms, 100%)" 136inject_blocking -m 1 -s 1 137