| 1 | |
| 2 | |
| 3 | |
| 4 |
|
| 5 | set -e
|
| 6 |
|
| 7 | if [ "$(id -u)" != 0 ]; then
|
| 8 | echo "[Skip] No root permission"
|
| 9 | exit 2
|
| 10 | fi
|
| 11 |
|
| 12 | err=0
|
| 13 | perfdata=$(mktemp /tmp/__perf_test_sched.perf.data.XXXXX)
|
| 14 | PID1=0
|
| 15 | PID2=0
|
| 16 |
|
| 17 | cleanup() {
|
| 18 | rm -f "${perfdata}"
|
| 19 | rm -f "${perfdata}".old
|
| 20 |
|
| 21 | trap - EXIT TERM INT
|
| 22 | }
|
| 23 |
|
| 24 | trap_cleanup() {
|
| 25 | echo "Unexpected signal in ${FUNCNAME[1]}"
|
| 26 | cleanup
|
| 27 | exit 1
|
| 28 | }
|
| 29 | trap trap_cleanup EXIT TERM INT
|
| 30 |
|
| 31 | start_noploops() {
|
| 32 | |
| 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 |
|
| 55 | cleanup_noploops() {
|
| 56 | kill "$PID1" "$PID2" || true
|
| 57 | }
|
| 58 |
|
| 59 | test_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 |
|
| 69 | test_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 |
|
| 79 | test_sched_latency_histogram() {
|
| 80 | echo "Sched latency histogram"
|
| 81 |
|
| 82 | if ! perf sched latency -H -i "${perfdata}" | grep -q "Latency Distribution Histogram"
|
| 83 | then
|
| 84 | echo "Sched latency histogram [Failed missing log histogram]"
|
| 85 | err=1
|
| 86 | fi
|
| 87 |
|
| 88 | if ! perf sched latency --histogram --hist-mode linear -i "${perfdata}" | grep -q "Latency Distribution Histogram"
|
| 89 | then
|
| 90 | echo "Sched latency histogram [Failed missing linear histogram]"
|
| 91 | err=1
|
| 92 | fi
|
| 93 | }
|
| 94 |
|
| 95 | test_sched_latency_time() {
|
| 96 | echo "Sched latency time filter"
|
| 97 |
|
| 98 | if ! perf sched latency --time 0, -i "${perfdata}" | grep -q perf-noploop
|
| 99 | then
|
| 100 | echo "Sched latency time filter [Failed missing output]"
|
| 101 | err=1
|
| 102 | fi
|
| 103 | }
|
| 104 |
|
| 105 | test_sched_script() {
|
| 106 | echo "Sched script"
|
| 107 |
|
| 108 | if ! perf sched script -i "${perfdata}" | grep -q perf-noploop
|
| 109 | then
|
| 110 | echo "Sched script [Failed missing output]"
|
| 111 | err=1
|
| 112 | fi
|
| 113 | }
|
| 114 |
|
| 115 | test_sched_map() {
|
| 116 | echo "Sched map"
|
| 117 |
|
| 118 | if ! perf sched map -i "${perfdata}" | grep -q perf-noploop
|
| 119 | then
|
| 120 | echo "Sched map [Failed missing output]"
|
| 121 | err=1
|
| 122 | fi
|
| 123 | }
|
| 124 |
|
| 125 | test_sched_timehist() {
|
| 126 | echo "Sched timehist"
|
| 127 |
|
| 128 | if ! perf sched timehist -i "${perfdata}" | grep -q perf-noploop
|
| 129 | then
|
| 130 | echo "Sched timehist [Failed missing output]"
|
| 131 | err=1
|
| 132 | fi
|
| 133 | }
|
| 134 |
|
| 135 | test_sched_record
|
| 136 | test_sched_latency
|
| 137 | test_sched_latency_histogram
|
| 138 | test_sched_latency_time
|
| 139 | test_sched_script
|
| 140 | test_sched_map
|
| 141 | test_sched_timehist
|
| 142 |
|
| 143 | cleanup
|
| 144 | exit $err
|
| 145 |
|