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