blob: 113df962a51c878f15a8df2b63969bde5c397ef9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#!/bin/bash
# perf sched tests
# SPDX-License-Identifier: GPL-2.0
set -e
if [ "$(id -u)" != 0 ]; then
echo "[Skip] No root permission"
exit 2
fi
err=0
perfdata=$(mktemp /tmp/__perf_test_sched.perf.data.XXXXX)
PID1=0
PID2=0
cleanup() {
rm -f "${perfdata}"
rm -f "${perfdata}".old
trap - EXIT TERM INT
}
trap_cleanup() {
echo "Unexpected signal in ${FUNCNAME[1]}"
cleanup
exit 1
}
trap trap_cleanup EXIT TERM INT
start_noploops() {
# Start two noploop workloads on CPU0 to trigger scheduling.
perf test -w noploop 10 &
PID1=$!
taskset -pc 0 $PID1
perf test -w noploop 10 &
PID2=$!
taskset -pc 0 $PID2
if ! grep -q 'Cpus_allowed_list:\s*0$' "/proc/$PID1/status"
then
echo "Sched [Error taskset did not work for the 1st noploop ($PID1)]"
grep Cpus_allowed /proc/$PID1/status
err=1
fi
if ! grep -q 'Cpus_allowed_list:\s*0$' "/proc/$PID2/status"
then
echo "Sched [Error taskset did not work for the 2nd noploop ($PID2)]"
grep Cpus_allowed /proc/$PID2/status
err=1
fi
}
cleanup_noploops() {
kill "$PID1" "$PID2" || true
}
test_sched_record() {
echo "Sched record"
start_noploops
perf sched record --no-inherit -o "${perfdata}" sleep 1
cleanup_noploops
}
test_sched_latency() {
echo "Sched latency"
if ! perf sched latency -i "${perfdata}" | grep -q perf-noploop
then
echo "Sched latency [Failed missing output]"
err=1
fi
}
test_sched_latency_histogram() {
echo "Sched latency histogram"
if ! perf sched latency -H -i "${perfdata}" | grep -q "Latency Distribution Histogram"
then
echo "Sched latency histogram [Failed missing log histogram]"
err=1
fi
if ! perf sched latency --histogram --hist-mode linear -i "${perfdata}" | grep -q "Latency Distribution Histogram"
then
echo "Sched latency histogram [Failed missing linear histogram]"
err=1
fi
}
test_sched_latency_time() {
echo "Sched latency time filter"
if ! perf sched latency --time 0, -i "${perfdata}" | grep -q perf-noploop
then
echo "Sched latency time filter [Failed missing output]"
err=1
fi
}
test_sched_script() {
echo "Sched script"
if ! perf sched script -i "${perfdata}" | grep -q perf-noploop
then
echo "Sched script [Failed missing output]"
err=1
fi
}
test_sched_map() {
echo "Sched map"
if ! perf sched map -i "${perfdata}" | grep -q perf-noploop
then
echo "Sched map [Failed missing output]"
err=1
fi
}
test_sched_timehist() {
echo "Sched timehist"
if ! perf sched timehist -i "${perfdata}" | grep -q perf-noploop
then
echo "Sched timehist [Failed missing output]"
err=1
fi
}
test_sched_record
test_sched_latency
test_sched_latency_histogram
test_sched_latency_time
test_sched_script
test_sched_map
test_sched_timehist
cleanup
exit $err
|