#!/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" } 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