Skip to content

Commit 6f5251f

Browse files
committed
Merge: perf test: Fix the TPEBS test and skip on KVM
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10/-/merge_requests/889 JIRA: https://issues.redhat.com/browse/RHEL-82381 This test fails on KVM, it should not be run there. Signed-off-by: Michael Petlan <mpetlan@redhat.com> Approved-by: Čestmír Kalina <ckalina@redhat.com> Approved-by: ashelat <ashelat@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: Julio Faracco <jfaracco@redhat.com>
2 parents 3f509c2 + e3729ca commit 6f5251f

File tree

1 file changed

+76
-13
lines changed

1 file changed

+76
-13
lines changed

tools/perf/tests/shell/test_stat_intel_tpebs.sh

Lines changed: 76 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,83 @@
33
# SPDX-License-Identifier: GPL-2.0
44

55
set -e
6-
grep -q GenuineIntel /proc/cpuinfo || { echo Skipping non-Intel; exit 2; }
76

8-
# Use this event for testing because it should exist in all platforms
9-
event=cache-misses:R
7+
ParanoidAndNotRoot() {
8+
[ "$(id -u)" != 0 ] && [ "$(cat /proc/sys/kernel/perf_event_paranoid)" -gt $1 ]
9+
}
1010

11-
# Hybrid platforms output like "cpu_atom/cache-misses/R", rather than as above
12-
alt_name=/cache-misses/R
11+
if ! grep -q GenuineIntel /proc/cpuinfo
12+
then
13+
echo "Skipping non-Intel"
14+
exit 2
15+
fi
1316

14-
# Without this cmd option, default value or zero is returned
15-
#echo "Testing without --record-tpebs"
16-
#result=$(perf stat -e "$event" true 2>&1)
17-
#[[ "$result" =~ $event || "$result" =~ $alt_name ]] || exit 1
17+
if ParanoidAndNotRoot 0
18+
then
19+
echo "Skipping paranoid >0 and not root"
20+
exit 2
21+
fi
1822

19-
# In platforms that do not support TPEBS, it should execute without error.
20-
echo "Testing with --record-tpebs"
21-
result=$(perf stat -e "$event" --record-tpebs -a sleep 0.01 2>&1)
22-
[[ "$result" =~ "perf record" && "$result" =~ $event || "$result" =~ $alt_name ]] || exit 1
23+
stat_output=$(mktemp /tmp/__perf_stat_tpebs_output.XXXXX)
24+
25+
cleanup() {
26+
rm -rf "${stat_output}"
27+
trap - EXIT TERM INT
28+
}
29+
30+
trap_cleanup() {
31+
echo "Unexpected signal in ${FUNCNAME[1]}"
32+
cat "${stat_output}"
33+
cleanup
34+
exit 1
35+
}
36+
trap trap_cleanup EXIT TERM INT
37+
38+
# Event to be used in tests
39+
event=cache-misses
40+
41+
if ! perf record -e "${event}:p" -a -o /dev/null sleep 0.01 > "${stat_output}" 2>&1
42+
then
43+
echo "Missing ${event} support"
44+
cleanup
45+
exit 2
46+
fi
47+
48+
test_with_record_tpebs() {
49+
echo "Testing with --record-tpebs"
50+
if ! perf stat -e "${event}:R" --record-tpebs -a sleep 0.01 > "${stat_output}" 2>&1
51+
then
52+
echo "Testing with --record-tpebs [Failed perf stat]"
53+
cat "${stat_output}"
54+
exit 1
55+
fi
56+
57+
# Expected output:
58+
# $ perf stat --record-tpebs -e cache-misses:R -a sleep 0.01
59+
# Events enabled
60+
# [ perf record: Woken up 2 times to write data ]
61+
# [ perf record: Captured and wrote 0.056 MB - ]
62+
#
63+
# Performance counter stats for 'system wide':
64+
#
65+
# 0 cache-misses:R
66+
#
67+
# 0.013963299 seconds time elapsed
68+
if ! grep "perf record" "${stat_output}"
69+
then
70+
echo "Testing with --record-tpebs [Failed missing perf record]"
71+
cat "${stat_output}"
72+
exit 1
73+
fi
74+
if ! grep "${event}:R" "${stat_output}" && ! grep "/${event}/R" "${stat_output}"
75+
then
76+
echo "Testing with --record-tpebs [Failed missing event name]"
77+
cat "${stat_output}"
78+
exit 1
79+
fi
80+
echo "Testing with --record-tpebs [Success]"
81+
}
82+
83+
test_with_record_tpebs
84+
cleanup
85+
exit 0

0 commit comments

Comments
 (0)