| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #!/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_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_script
- test_sched_map
- test_sched_timehist
- cleanup
- exit $err
|