Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf tests: Add test for trace output loss

Add a test that checks that trace output is not lost to races. This is
accomplished by tracing the exit_group syscall of "true" multiple times and
checking for correct output.

Signed-off-by: Benjamin Peterson <benjamin@engflow.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Howard Chu <howardchu95@gmail.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20241107232128.108981-3-benjamin@engflow.com
[ Addressed two ShellCheck warnings ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Benjamin Peterson and committed by
Arnaldo Carvalho de Melo
f72bcb92 1302e352

+31
+31
tools/perf/tests/shell/trace_exit_race.sh
··· 1 + #!/bin/sh 2 + # perf trace exit race 3 + # SPDX-License-Identifier: GPL-2.0 4 + 5 + # Check that the last events of a perf trace'd subprocess are not 6 + # lost. Specifically, trace the exiting syscall of "true" 10 times and ensure 7 + # the output contains 10 correct lines. 8 + 9 + # shellcheck source=lib/probe.sh 10 + . "$(dirname $0)"/lib/probe.sh 11 + 12 + skip_if_no_perf_trace || exit 2 13 + 14 + trace_shutdown_race() { 15 + for _ in $(seq 10); do 16 + perf trace -e syscalls:sys_enter_exit_group true 2>>$file 17 + done 18 + [ "$(grep -c -E ' +[0-9]+\.[0-9]+ +true/[0-9]+ syscalls:sys_enter_exit_group\(\)$' $file)" = "10" ] 19 + } 20 + 21 + 22 + file=$(mktemp /tmp/temporary_file.XXXXX) 23 + 24 + # Do not use whatever ~/.perfconfig file, it may change the output 25 + # via trace.{show_timestamp,show_prefix,etc} 26 + export PERF_CONFIG=/dev/null 27 + 28 + trace_shutdown_race 29 + err=$? 30 + rm -f ${file} 31 + exit $err