mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-04-29 12:28:27 +02:00
c5e47e4d00
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>
117 lines
2.0 KiB
Bash
Executable File
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
|