Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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)
19
20TEST_NAME=(
21 "spinlock"
22 "list"
23 "buffer"
24 "buffer with barrier"
25 "memcpy"
26 "memcpy with barrier"
27 "increment"
28)
29IFS="$OLDIFS"
30
31REPS=1000
32SLOW_REPS=100
33NR_THREADS=$((6*${NR_CPUS}))
34
35function do_tests()
36{
37 local i=0
38 while [ "$i" -lt "${#TEST_LIST[@]}" ]; do
39 echo "Running test ${TEST_NAME[$i]}"
40 ./param_test ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1
41 echo "Running compare-twice test ${TEST_NAME[$i]}"
42 ./param_test_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1
43 let "i++"
44 done
45}
46
47echo "Default parameters"
48do_tests
49
50echo "Loop injection: 10000 loops"
51
52OLDIFS="$IFS"
53IFS=$'\n'
54INJECT_LIST=(
55 "1"
56 "2"
57 "3"
58 "4"
59 "5"
60 "6"
61 "7"
62 "8"
63 "9"
64)
65IFS="$OLDIFS"
66
67NR_LOOPS=10000
68
69i=0
70while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
71 echo "Injecting at <${INJECT_LIST[$i]}>"
72 do_tests -${INJECT_LIST[i]} ${NR_LOOPS}
73 let "i++"
74done
75NR_LOOPS=
76
77function inject_blocking()
78{
79 OLDIFS="$IFS"
80 IFS=$'\n'
81 INJECT_LIST=(
82 "7"
83 "8"
84 "9"
85 )
86 IFS="$OLDIFS"
87
88 NR_LOOPS=-1
89
90 i=0
91 while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
92 echo "Injecting at <${INJECT_LIST[$i]}>"
93 do_tests -${INJECT_LIST[i]} -1 ${@}
94 let "i++"
95 done
96 NR_LOOPS=
97}
98
99echo "Yield injection (25%)"
100inject_blocking -m 4 -y
101
102echo "Yield injection (50%)"
103inject_blocking -m 2 -y
104
105echo "Yield injection (100%)"
106inject_blocking -m 1 -y
107
108echo "Kill injection (25%)"
109inject_blocking -m 4 -k
110
111echo "Kill injection (50%)"
112inject_blocking -m 2 -k
113
114echo "Kill injection (100%)"
115inject_blocking -m 1 -k
116
117echo "Sleep injection (1ms, 25%)"
118inject_blocking -m 4 -s 1
119
120echo "Sleep injection (1ms, 50%)"
121inject_blocking -m 2 -s 1
122
123echo "Sleep injection (1ms, 100%)"
124inject_blocking -m 1 -s 1