0001
0002
0003
0004 NR_CPUS=`grep '^processor' /proc/cpuinfo | wc -l`
0005
0006 EXTRA_ARGS=${@}
0007
0008 OLDIFS="$IFS"
0009 IFS=$'\n'
0010 TEST_LIST=(
0011 "-T s"
0012 "-T l"
0013 "-T b"
0014 "-T b -M"
0015 "-T m"
0016 "-T m -M"
0017 "-T i"
0018 "-T r"
0019 )
0020
0021 TEST_NAME=(
0022 "spinlock"
0023 "list"
0024 "buffer"
0025 "buffer with barrier"
0026 "memcpy"
0027 "memcpy with barrier"
0028 "increment"
0029 "membarrier"
0030 )
0031 IFS="$OLDIFS"
0032
0033 REPS=1000
0034 SLOW_REPS=100
0035 NR_THREADS=$((6*${NR_CPUS}))
0036
0037 function do_tests()
0038 {
0039 local i=0
0040 while [ "$i" -lt "${#TEST_LIST[@]}" ]; do
0041 echo "Running test ${TEST_NAME[$i]}"
0042 ./param_test ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1
0043 echo "Running compare-twice test ${TEST_NAME[$i]}"
0044 ./param_test_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1
0045 let "i++"
0046 done
0047 }
0048
0049 echo "Default parameters"
0050 do_tests
0051
0052 echo "Loop injection: 10000 loops"
0053
0054 OLDIFS="$IFS"
0055 IFS=$'\n'
0056 INJECT_LIST=(
0057 "1"
0058 "2"
0059 "3"
0060 "4"
0061 "5"
0062 "6"
0063 "7"
0064 "8"
0065 "9"
0066 )
0067 IFS="$OLDIFS"
0068
0069 NR_LOOPS=10000
0070
0071 i=0
0072 while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
0073 echo "Injecting at <${INJECT_LIST[$i]}>"
0074 do_tests -${INJECT_LIST[i]} ${NR_LOOPS}
0075 let "i++"
0076 done
0077 NR_LOOPS=
0078
0079 function inject_blocking()
0080 {
0081 OLDIFS="$IFS"
0082 IFS=$'\n'
0083 INJECT_LIST=(
0084 "7"
0085 "8"
0086 "9"
0087 )
0088 IFS="$OLDIFS"
0089
0090 NR_LOOPS=-1
0091
0092 i=0
0093 while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
0094 echo "Injecting at <${INJECT_LIST[$i]}>"
0095 do_tests -${INJECT_LIST[i]} -1 ${@}
0096 let "i++"
0097 done
0098 NR_LOOPS=
0099 }
0100
0101 echo "Yield injection (25%)"
0102 inject_blocking -m 4 -y
0103
0104 echo "Yield injection (50%)"
0105 inject_blocking -m 2 -y
0106
0107 echo "Yield injection (100%)"
0108 inject_blocking -m 1 -y
0109
0110 echo "Kill injection (25%)"
0111 inject_blocking -m 4 -k
0112
0113 echo "Kill injection (50%)"
0114 inject_blocking -m 2 -k
0115
0116 echo "Kill injection (100%)"
0117 inject_blocking -m 1 -k
0118
0119 echo "Sleep injection (1ms, 25%)"
0120 inject_blocking -m 4 -s 1
0121
0122 echo "Sleep injection (1ms, 50%)"
0123 inject_blocking -m 2 -s 1
0124
0125 echo "Sleep injection (1ms, 100%)"
0126 inject_blocking -m 1 -s 1