mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
perf test cs-etm: Replace unroll loop thread with deterministic decode test
Testing a long sequence without branches seems like it would be better as a decoder unit test, and this test doesn't test decoding either, so it's not clear what bugs this is trying to catch. The new deterministic workload has somewhat long sequences when built unoptimized, and we can always increase them later if we want to. But now we test that decoding always gives the same result for the same sequence of code which we've never had before. Signed-off-by: James Clark <james.clark@linaro.org> Tested-by: Leo Yan <leo.yan@arm.com> Cc: Amir Ayupov <aaupov@meta.com> Cc: Ian Rogers <irogers@google.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Mike Leach <mike.leach@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paschalis Mpeis <Paschalis.Mpeis@arm.com> Cc: Shuah Khan <skhan@linuxfoundation.org> Cc: Suzuki Poulouse <suzuki.poulose@arm.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
3fdf30607e
commit
ccf62a267a
72
tools/perf/tests/shell/coresight/deterministic.sh
Executable file
72
tools/perf/tests/shell/coresight/deterministic.sh
Executable file
|
|
@ -0,0 +1,72 @@
|
|||
#!/bin/bash -e
|
||||
# CoreSight deterministic workload decode (exclusive)
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
# If CoreSight is not available, skip the test
|
||||
perf list pmu | grep -q cs_etm || exit 2
|
||||
|
||||
tmpdir=$(mktemp -d /tmp/__perf_test.coresight_deterministic.XXXXX)
|
||||
|
||||
cleanup() {
|
||||
rm -rf "${tmpdir}"
|
||||
trap - EXIT TERM INT
|
||||
}
|
||||
|
||||
trap_cleanup() {
|
||||
cleanup
|
||||
exit 1
|
||||
}
|
||||
trap trap_cleanup EXIT TERM INT
|
||||
|
||||
cf="$tmpdir/ctl"
|
||||
af="$tmpdir/ack"
|
||||
mkfifo "$cf" "$af"
|
||||
|
||||
# Start disabled and use the control FIFO to only record the workload and not
|
||||
# startup.
|
||||
perf record -o "$tmpdir/data" -e cs_etm//u -D -1 --control fifo:"$cf","$af" -- \
|
||||
perf test --record-ctl fifo:"$cf","$af" -w deterministic > /dev/null 2>&1
|
||||
|
||||
perf script -i "$tmpdir/data" --itrace=i1i -F ip,srcline | \
|
||||
grep "deterministic.c" | uniq > "$tmpdir/script" 2>/dev/null
|
||||
|
||||
|
||||
# Remove brace lines and call sites as they may not be hit or may have
|
||||
# extra hits after returning, depending on the compiler.
|
||||
sed -i \
|
||||
-e '/deterministic.c:8$/d' \
|
||||
-e '/deterministic.c:12$/d' \
|
||||
-e '/deterministic.c:15$/d' \
|
||||
-e '/deterministic.c:19$/d' \
|
||||
-e '/deterministic.c:23$/d' \
|
||||
-e '/deterministic.c:28$/d' \
|
||||
-e '/deterministic.c:34$/d' \
|
||||
-e '/deterministic.c:36$/d' \
|
||||
-e '/deterministic.c:37$/d' \
|
||||
"$tmpdir/script"
|
||||
|
||||
cat > "$tmpdir/expected" << EOF
|
||||
deterministic.c:24
|
||||
deterministic.c:25
|
||||
deterministic.c:26
|
||||
deterministic.c:9
|
||||
deterministic.c:10
|
||||
deterministic.c:11
|
||||
deterministic.c:30
|
||||
deterministic.c:31
|
||||
deterministic.c:32
|
||||
deterministic.c:16
|
||||
deterministic.c:17
|
||||
deterministic.c:18
|
||||
EOF
|
||||
|
||||
if ! diff -q "$tmpdir/script" "$tmpdir/expected"; then
|
||||
echo "FAIL: line numbers don't match expected: "
|
||||
head -n 100 "$tmpdir/script"
|
||||
cleanup
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cleanup
|
||||
exit 0
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
#!/bin/bash -e
|
||||
# CoreSight / Unroll Loop Thread 10 (exclusive)
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Carsten Haitzler <carsten.haitzler@arm.com>, 2021
|
||||
|
||||
TEST="unroll_loop_thread"
|
||||
|
||||
# shellcheck source=../lib/coresight.sh
|
||||
. "$(dirname $0)"/../lib/coresight.sh
|
||||
|
||||
ARGS="10"
|
||||
DATV="10"
|
||||
# shellcheck disable=SC2153
|
||||
DATA="$DATD/perf-$TEST-$DATV.data"
|
||||
|
||||
perf record $PERFRECOPT -o "$DATA" "$BIN" $ARGS
|
||||
|
||||
perf_dump_aux_verify "$DATA" 10 10 10
|
||||
|
||||
err=$?
|
||||
exit $err
|
||||
Loading…
Reference in New Issue
Block a user