Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0+ or MIT
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