Messages in this thread | | | Date | Mon, 14 Nov 2022 11:11:37 +0000 | Subject | Re: [PATCH 02/12] perf test: Replace pipe test workload with noploop | From | James Clark <> |
| |
On 10/11/2022 18:19, Namhyung Kim wrote: > So that it can get rid of requirement of a compiler. > Also define and use more local symbols to ease future changes. > > $ sudo ./perf test -v pipe > 87: perf pipe recording and injection test : > --- start --- > test child forked, pid 748003 > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.000 MB - ] > 748014 748014 -1 |perf > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.000 MB - ] > 99.83% perf perf [.] noploop > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.000 MB - ] > 99.85% perf perf [.] noploop > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.160 MB /tmp/perf.data.2XYPdw (4007 samples) ] > 99.83% perf perf [.] noploop > test child finished with 0 > ---- end ---- > perf pipe recording and injection test: Ok > > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: James Clark <james.clark@arm.com>
> --- > tools/perf/tests/shell/pipe_test.sh | 55 ++++++----------------------- > 1 file changed, 10 insertions(+), 45 deletions(-) > > diff --git a/tools/perf/tests/shell/pipe_test.sh b/tools/perf/tests/shell/pipe_test.sh > index 1b32b4f28391..8dd115dd35a7 100755 > --- a/tools/perf/tests/shell/pipe_test.sh > +++ b/tools/perf/tests/shell/pipe_test.sh > @@ -2,68 +2,33 @@ > # perf pipe recording and injection test > # SPDX-License-Identifier: GPL-2.0 > > -# skip if there's no compiler > -if ! [ -x "$(command -v cc)" ]; then > - echo "failed: no compiler, install gcc" > - exit 2 > -fi > - > -file=$(mktemp /tmp/test.file.XXXXXX) > data=$(mktemp /tmp/perf.data.XXXXXX) > +prog="perf test -w noploop" > +task="perf" > +sym="noploop" > > -cat <<EOF | cc -o ${file} -x c - > -#include <signal.h> > -#include <stdlib.h> > -#include <unistd.h> > - > -volatile int done; > - > -void sigalrm(int sig) { > - done = 1; > -} > - > -__attribute__((noinline)) void noploop(void) { > - while (!done) > - continue; > -} > - > -int main(int argc, char *argv[]) { > - int sec = 1; > - > - if (argc > 1) > - sec = atoi(argv[1]); > - > - signal(SIGALRM, sigalrm); > - alarm(sec); > - > - noploop(); > - return 0; > -} > -EOF > - > - > -if ! perf record -e task-clock:u -o - ${file} | perf report -i - --task | grep test.file; then > +if ! perf record -e task-clock:u -o - ${prog} | perf report -i - --task | grep ${task}; then > echo "cannot find the test file in the perf report" > exit 1 > fi > > -if ! perf record -e task-clock:u -o - ${file} | perf inject -b | perf report -i - | grep noploop; then > +if ! perf record -e task-clock:u -o - ${prog} | perf inject -b | perf report -i - | grep ${sym}; then > echo "cannot find noploop function in pipe #1" > exit 1 > fi > > -perf record -e task-clock:u -o - ${file} | perf inject -b -o ${data} > -if ! perf report -i ${data} | grep noploop; then > +perf record -e task-clock:u -o - ${prog} | perf inject -b -o ${data} > +if ! perf report -i ${data} | grep ${sym}; then > echo "cannot find noploop function in pipe #2" > exit 1 > fi > > -perf record -e task-clock:u -o ${data} ${file} > -if ! perf inject -b -i ${data} | perf report -i - | grep noploop; then > +perf record -e task-clock:u -o ${data} ${prog} > +if ! perf inject -b -i ${data} | perf report -i - | grep ${sym}; then > echo "cannot find noploop function in pipe #3" > exit 1 > fi > > > -rm -f ${file} ${data} ${data}.old > +rm -f ${data} ${data}.old > exit 0
| |