| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/bin/bash
- # test Intel TPEBS counting mode (exclusive)
- # SPDX-License-Identifier: GPL-2.0
- set -e
- ParanoidAndNotRoot() {
- [ "$(id -u)" != 0 ] && [ "$(cat /proc/sys/kernel/perf_event_paranoid)" -gt $1 ]
- }
- if ! grep -q GenuineIntel /proc/cpuinfo
- then
- echo "Skipping non-Intel"
- exit 2
- fi
- if ParanoidAndNotRoot 0
- then
- echo "Skipping paranoid >0 and not root"
- exit 2
- fi
- stat_output=$(mktemp /tmp/__perf_stat_tpebs_output.XXXXX)
- cleanup() {
- rm -rf "${stat_output}"
- trap - EXIT TERM INT
- }
- trap_cleanup() {
- echo "Unexpected signal in ${FUNCNAME[1]}"
- cat "${stat_output}"
- cleanup
- exit 1
- }
- trap trap_cleanup EXIT TERM INT
- # Event to be used in tests
- event=cache-misses
- if ! perf record -e "${event}:p" -a -o /dev/null sleep 0.01 > "${stat_output}" 2>&1
- then
- echo "Missing ${event} support"
- cleanup
- exit 2
- fi
- test_with_record_tpebs() {
- echo "Testing with --record-tpebs"
- if ! perf stat -e "${event}:R" --record-tpebs -a sleep 0.01 > "${stat_output}" 2>&1
- then
- echo "Testing with --record-tpebs [Failed perf stat]"
- cat "${stat_output}"
- exit 1
- fi
- # Expected output:
- # $ perf stat --record-tpebs -e cache-misses:R -a sleep 0.01
- # Events enabled
- # [ perf record: Woken up 2 times to write data ]
- # [ perf record: Captured and wrote 0.056 MB - ]
- #
- # Performance counter stats for 'system wide':
- #
- # 0 cache-misses:R
- #
- # 0.013963299 seconds time elapsed
- if ! grep "perf record" "${stat_output}"
- then
- echo "Testing with --record-tpebs [Failed missing perf record]"
- cat "${stat_output}"
- exit 1
- fi
- if ! grep "${event}:R" "${stat_output}" && ! grep "/${event}/R" "${stat_output}"
- then
- echo "Testing with --record-tpebs [Failed missing event name]"
- cat "${stat_output}"
- exit 1
- fi
- echo "Testing with --record-tpebs [Success]"
- }
- test_with_record_tpebs
- cleanup
- exit 0
|