mirror of
https://github.com/torvalds/linux.git
synced 2026-04-26 02:22:28 -04:00
perf test: Add stat uniquifying test
The `stat+uniquify.sh` test retrieves all uniquified `clockticks` events
from `perf list -v clockticks` and check if `perf stat -e clockticks -A`
contains all of them.
Committer testing:
root@x1:~# grep -m1 "model name" /proc/cpuinfo
model name : 13th Gen Intel(R) Core(TM) i7-1365U
root@x1:~# perf list clockticks
List of pre-defined events (to be used in -e or -M):
uncore_clock/clockticks/ [Kernel PMU event]
uncore memory:
unc_m_clockticks
[Number of clocks. Unit: uncore_imc]
root@x1:~#
root@x1:~# perf test uniquifying
92: perf stat events uniquifying : Ok
root@x1:~# perf test -vv uniquifying
92: perf stat events uniquifying:
--- start ---
test child forked, pid 1552628
stat event uniquifying test
---- end(0) ----
92: perf stat events uniquifying : Ok
root@x1:~#
Signed-off-by: Chun-Tse Shao <ctshao@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: Andi Kleen <ak@linux.intel.com>
Cc: Dr. David Alan Gilbert <linux@treblig.org>
Cc: Howard Chu <howardchu95@gmail.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: Kan Liang <kan.liang@linux.intel.com>
Cc: Levi Yun <yeoreum.yun@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Weilin Wang <weilin.wang@intel.com>
Link: https://lore.kernel.org/r/20250513215401.2315949-4-ctshao@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
137359b789
commit
cb422594d6
69
tools/perf/tests/shell/stat+event_uniquifying.sh
Executable file
69
tools/perf/tests/shell/stat+event_uniquifying.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
# perf stat events uniquifying
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
set -e
|
||||
|
||||
stat_output=$(mktemp /tmp/__perf_test.stat_output.XXXXX)
|
||||
perf_tool=perf
|
||||
err=0
|
||||
|
||||
test_event_uniquifying() {
|
||||
# We use `clockticks` to verify the uniquify behavior.
|
||||
event="clockticks"
|
||||
|
||||
# If the `-A` option is added, the event should be uniquified.
|
||||
#
|
||||
# $perf list -v clockticks
|
||||
#
|
||||
# List of pre-defined events (to be used in -e or -M):
|
||||
#
|
||||
# uncore_imc_0/clockticks/ [Kernel PMU event]
|
||||
# uncore_imc_1/clockticks/ [Kernel PMU event]
|
||||
# uncore_imc_2/clockticks/ [Kernel PMU event]
|
||||
# uncore_imc_3/clockticks/ [Kernel PMU event]
|
||||
# uncore_imc_4/clockticks/ [Kernel PMU event]
|
||||
# uncore_imc_5/clockticks/ [Kernel PMU event]
|
||||
#
|
||||
# ...
|
||||
#
|
||||
# $perf stat -e clockticks -A -- true
|
||||
#
|
||||
# Performance counter stats for 'system wide':
|
||||
#
|
||||
# CPU0 3,773,018 uncore_imc_0/clockticks/
|
||||
# CPU0 3,609,025 uncore_imc_1/clockticks/
|
||||
# CPU0 0 uncore_imc_2/clockticks/
|
||||
# CPU0 3,230,009 uncore_imc_3/clockticks/
|
||||
# CPU0 3,049,897 uncore_imc_4/clockticks/
|
||||
# CPU0 0 uncore_imc_5/clockticks/
|
||||
#
|
||||
# 0.002029828 seconds time elapsed
|
||||
|
||||
echo "stat event uniquifying test"
|
||||
uniquified_event_array=()
|
||||
|
||||
# Check how many uniquified events.
|
||||
while IFS= read -r line; do
|
||||
uniquified_event=$(echo "$line" | awk '{print $1}')
|
||||
uniquified_event_array+=("${uniquified_event}")
|
||||
done < <(${perf_tool} list -v ${event} | grep "\[Kernel PMU event\]")
|
||||
|
||||
perf_command="${perf_tool} stat -e $event -A -o ${stat_output} -- true"
|
||||
$perf_command
|
||||
|
||||
# Check the output contains all uniquified events.
|
||||
for uniquified_event in "${uniquified_event_array[@]}"; do
|
||||
if ! cat "${stat_output}" | grep -q "${uniquified_event}"; then
|
||||
echo "Event is not uniquified [Failed]"
|
||||
echo "${perf_command}"
|
||||
cat "${stat_output}"
|
||||
err=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
test_event_uniquifying
|
||||
rm -f "${stat_output}"
|
||||
exit $err
|
||||
Reference in New Issue
Block a user