mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
perf test shell daemon: Make signal test less racy
The daemon signal test sends signals and then expects files to be written. It was observed on an Intel Alderlake that the signals were sent too quickly leading to the 3 expected files not appearing. To avoid this send the next signal only after the expected previous file has appeared. To avoid an infinite loop the number of retries is limited. Signed-off-by: Ian Rogers <irogers@google.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Ross Zwisler <zwisler@chromium.org> Cc: Shirisha G <shirisha@linux.ibm.com> Link: https://lore.kernel.org/r/20240124043015.1388867-6-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
1c2124ec84
commit
9a8dd2f24d
@ -414,16 +414,30 @@ EOF
|
||||
# start daemon
|
||||
daemon_start ${config} test
|
||||
|
||||
# send 2 signals
|
||||
perf daemon signal --config ${config} --session test
|
||||
perf daemon signal --config ${config}
|
||||
|
||||
# stop daemon
|
||||
daemon_exit ${config}
|
||||
|
||||
# count is 2 perf.data for signals and 1 for perf record finished
|
||||
count=`ls ${base}/session-test/*perf.data* | wc -l`
|
||||
if [ ${count} -ne 3 ]; then
|
||||
# send 2 signals then exit. Do this in a loop watching the number of
|
||||
# files to avoid races. If the loop retries more than 600 times then
|
||||
# give up.
|
||||
local retries=0
|
||||
local signals=0
|
||||
local success=0
|
||||
while [ ${retries} -lt 600 ] && [ ${success} -eq 0 ]; do
|
||||
local files
|
||||
files=`ls ${base}/session-test/*perf.data* 2> /dev/null | wc -l`
|
||||
if [ ${signals} -eq 0 ]; then
|
||||
perf daemon signal --config ${config} --session test
|
||||
signals=1
|
||||
elif [ ${signals} -eq 1 ] && [ $files -ge 1 ]; then
|
||||
perf daemon signal --config ${config}
|
||||
signals=2
|
||||
elif [ ${signals} -eq 2 ] && [ $files -ge 2 ]; then
|
||||
daemon_exit ${config}
|
||||
signals=3
|
||||
elif [ ${signals} -eq 3 ] && [ $files -ge 3 ]; then
|
||||
success=1
|
||||
fi
|
||||
retries=$((${retries} +1))
|
||||
done
|
||||
if [ ${success} -eq 0 ]; then
|
||||
error=1
|
||||
echo "FAILED: perf data no generated"
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user