Re: [RFC PATCH v18 8/8] perf test: Add test for Intel TPEBS counting mode
From: Arnaldo Carvalho de Melo
Date: Mon Aug 12 2024 - 21:26:05 EST
On Mon, Aug 12, 2024 at 10:24:40PM -0300, Arnaldo Carvalho de Melo wrote:
> On Sat, Jul 20, 2024 at 02:21:01AM -0400, weilin.wang@xxxxxxxxx wrote:
> > From: Weilin Wang <weilin.wang@xxxxxxxxx>
> >
> > Intel TPEBS sampling mode is supported through perf record. The counting mode
> > code uses perf record to capture retire_latency value and use it in metric
> > calculation. This test checks the counting mode code on Intel platforms.
>
> root@x1:~# perf test -vvvvv 123
> 123: test Intel TPEBS counting mode:
> --- start ---
> test child forked, pid 2600160
> Testing without --record-tpebs
> Testing with --record-tpebs
> ---- end(-1) ----
> 123: test Intel TPEBS counting mode : FAILED!
> root@x1:~# grep -m1 "model name" /proc/cpuinfo
> model name : 13th Gen Intel(R) Core(TM) i7-1365U
> root@x1:~#
>
> What am I missing?
>
> The current codebase is in tmp.perf-tools-next
acme@x1:~/git/perf-tools-next$ uname -a
Linux x1 6.8.11-200.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Sun May 26 20:05:41 UTC 2024 x86_64 GNU/Linux
> - Arnaldo
>
> > Signed-off-by: Weilin Wang <weilin.wang@xxxxxxxxx>
> > ---
> > .../perf/tests/shell/test_stat_intel_tpebs.sh | 19 +++++++++++++++++++
> > 1 file changed, 19 insertions(+)
> > create mode 100755 tools/perf/tests/shell/test_stat_intel_tpebs.sh
> >
> > diff --git a/tools/perf/tests/shell/test_stat_intel_tpebs.sh b/tools/perf/tests/shell/test_stat_intel_tpebs.sh
> > new file mode 100755
> > index 000000000000..c60b29add980
> > --- /dev/null
> > +++ b/tools/perf/tests/shell/test_stat_intel_tpebs.sh
> > @@ -0,0 +1,19 @@
> > +#!/bin/bash
> > +# test Intel TPEBS counting mode
> > +# SPDX-License-Identifier: GPL-2.0
> > +
> > +set -e
> > +grep -q GenuineIntel /proc/cpuinfo || { echo Skipping non-Intel; exit 2; }
> > +
> > +# Use this event for testing because it should exist in all platforms
> > +event=cache-misses:R
> > +
> > +# Without this cmd option, default value or zero is returned
> > +echo "Testing without --record-tpebs"
> > +result=$(perf stat -e "$event" true 2>&1)
> > +[[ "$result" =~ $event ]] || exit 1
> > +
> > +# In platforms that do not support TPEBS, it should execute without error.
> > +echo "Testing with --record-tpebs"
> > +result=$(perf stat -e "$event" --record-tpebs -a sleep 0.01 2>&1)
> > +[[ "$result" =~ "perf record" && "$result" =~ $event ]] || exit 1
> > --
> > 2.43.0
> >