Messages in this thread | | | From | Jiri Olsa <> | Date | Wed, 24 Jan 2024 09:38:58 +0100 | Subject | Re: [PATCH v2 5/5] perf test: Make daemon signal test less racy |
| |
On Tue, Jan 23, 2024 at 08:30:15PM -0800, Ian Rogers wrote: > 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: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
jirka
> --- > tools/perf/tests/shell/daemon.sh | 34 ++++++++++++++++++++++---------- > 1 file changed, 24 insertions(+), 10 deletions(-) > > diff --git a/tools/perf/tests/shell/daemon.sh b/tools/perf/tests/shell/daemon.sh > index 4c598cfc5afa..e5fa8d6f9eb1 100755 > --- a/tools/perf/tests/shell/daemon.sh > +++ b/tools/perf/tests/shell/daemon.sh > @@ -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 > -- > 2.43.0.429.g432eaa2c6b-goog >
| |