All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] perf test: Fix LBR test by ignoring idle task
@ 2025-05-09 21:30 Namhyung Kim
  2025-05-09 21:30 ` [PATCH 2/2] perf test: Update sysfs path for core PMU caps Namhyung Kim
  2025-05-13 14:58 ` [PATCH 1/2] perf test: Fix LBR test by ignoring idle task Ian Rogers
  0 siblings, 2 replies; 6+ messages in thread
From: Namhyung Kim @ 2025-05-09 21:30 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Ian Rogers, Kan Liang
  Cc: Jiri Olsa, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users

I found 'perf record LBR tests' failing due to empty branch stacks.

  $ perf test -v LBR
  ...
  LBR system wide any branch test
  Lowering default frequency rate from 4000 to 1000.
  Please consider tweaking /proc/sys/kernel/perf_event_max_sample_rate.
  [ perf record: Woken up 8 times to write data ]
  [ perf record: Captured and wrote 3.142 MB /tmp/__perf_test.perf.data.dgSBl (3572 samples) ]
  LBR system wide any branch test: 3572 samples
  LBR system wide any branch test [Failed empty br stack ratio exceed 2%: 3%]
  LBR system wide any call test
  Lowering default frequency rate from 4000 to 1000.
  Please consider tweaking /proc/sys/kernel/perf_event_max_sample_rate.
  [ perf record: Woken up 8 times to write data ]
  [ perf record: Captured and wrote 3.337 MB /tmp/__perf_test.perf.data.dgSBl (3967 samples) ]
  LBR system wide any call test: 3967 samples
  LBR system wide any call test [Failed empty br stack ratio exceed 2%: 9%]
  ...

The failing cases were in system-wide mode and I realized that the
samples were from the idle tasks (swapper).  I suspect going to/from
idle state may affect the LBR contents.

If we can skip empty branch stacks from the idle tasks, the failure
should go away.  I can see the following output in perf report -D.

  $ perf report -D | grep -m5 -A3 'branch stack: nr:0'
  ...
  --
  ... branch stack: nr:0
   ... thread: swapper:0
   ...... dso: /proc/kcore

  --
  ... branch stack: nr:0
   ... thread: swapper:0
   ...... dso: /proc/kcore

  --
  ... branch stack: nr:0
   ... thread: DefaultEventMan:10282
   ...... dso: /proc/kcore

  --
  ... branch stack: nr:0
   ... thread: swapper:0
   ...... dso: /proc/kcore

  --
  ... branch stack: nr:0
   ... thread: swapper:0
   ...... dso: /proc/kcore

  $ perf report -D | grep -c 'branch stack: nr:0'
  145

  $ perf report -D | grep -A3 'branch stack: nr:0' | grep thread | grep -c swapper
  i36

  $ perf report -D | grep -A3 'branch stack: nr:0' | grep thread | grep -cv swapper
  9

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/tests/shell/record_lbr.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/tests/shell/record_lbr.sh b/tools/perf/tests/shell/record_lbr.sh
index 8d750ee631f877fd..afad02d0180e023c 100755
--- a/tools/perf/tests/shell/record_lbr.sh
+++ b/tools/perf/tests/shell/record_lbr.sh
@@ -93,7 +93,7 @@ lbr_test() {
     return
   fi
 
-  zero_nr=$(echo "$out" | grep -c 'branch stack: nr:0' || true)
+  zero_nr=$(echo "$out" | grep -A3 'branch stack: nr:0' | grep thread | grep -cv swapper || true)
   r=$(($zero_nr * 100 / $bs_nr))
   if [ $r -gt $threshold ]; then
     echo "$test [Failed empty br stack ratio exceed $threshold%: $r%]"
-- 
2.49.0.1015.ga840276032-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-05-13 20:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-09 21:30 [PATCH 1/2] perf test: Fix LBR test by ignoring idle task Namhyung Kim
2025-05-09 21:30 ` [PATCH 2/2] perf test: Update sysfs path for core PMU caps Namhyung Kim
2025-05-13 14:58   ` Ian Rogers
2025-05-13 20:46     ` Arnaldo Carvalho de Melo
2025-05-13 14:58 ` [PATCH 1/2] perf test: Fix LBR test by ignoring idle task Ian Rogers
2025-05-13 20:46   ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.