Files
linux-stable-mirror/tools/perf/tests/shell/sched.sh
T
Ian Rogers c5e47e4d00 perf tests sched: Avoid error in cleanup on loaded machines
The stop_noploops function will kill the noploop processes that are
running for 10 seconds.

On a loaded machine they may have already terminated meaning the kill
will return an error of no such process.

This doesn't matter and so ignore the error to avoid the test
terminating in the cleanup.

Fixes: 0e22c5ca44 ("perf test: Add sched latency and script shell tests")
Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2026-01-23 16:58:39 -03:00

117 lines
2.0 KiB
Bash
Executable File

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