Re: [Fuego] [PATCH v2] lmbench: Use 'SCRIPTS_PATH' to specify distribution installed binaries path
<[email protected]> Tue, 9 Nov 2021 17:59:44 +0000
| Newsgroups | dev.linux.lists.fuego |
|---|---|
| Message-ID | <BYAPR13MB2503BA329A916305BB0F7C76FD929@BYAPR13MB2503.namprd13.prod.outlook.com> |
Thanks. I look forward to seeing the updated patch. -- Tim > -----Original Message----- > From: [email protected] <[email protected]> > Sent: Tuesday, November 9, 2021 10:53 AM > To: Bird, Tim <[email protected]> > Cc: [email protected]; [email protected]; [email protected]; [email protected] > Subject: RE: [PATCH v2] lmbench: Use 'SCRIPTS_PATH' to specify distribution installed binaries path > > Hi Tim, > > Thank you for your comments, please find my inline comments. > > >-----Original Message----- > >From: [email protected] <[email protected]> > >Sent: 05 November 2021 23:38 > >To: pyla venkata(TSIP) <[email protected]> > >Cc: sangorrin daniel(サンゴリン ダニエル □SWC◯ACT) > ><[email protected]>; [email protected]; dinesh > >kumar(TSIP) <[email protected]> > >Subject: RE: [PATCH v2] lmbench: Use 'SCRIPTS_PATH' to specify distribution > >installed binaries path > > > >OK - this one I have some suggestions for... > > > >See comments inline below. > > > >> -----Original Message----- > >> From: [email protected] <[email protected]> > >> > >> From: venkata pyla <[email protected]> > >> > >> Use 'SCRIPTS_PATH' variable to specify lmbench scripts directory if > >> the lmbench is installed by distribution, and then use > >> get_program_path to search the binaries in the 'SCRIPTS_PATH'. > >> > >> default 'SCRIPTS_PATH' directory is > >> $BOARD_TESTDIR/fuego.$TESTDIR/scripts > >> and can be specify using --dynamic-vars > >> > >> $ ftc run-test -b local -t Benchmark.lmbench2 -p ptrca \ > >> --dynamic-vars "{'SCRIPTS_PATH':'/usr/lib/lmbench/scripts'}" > > > >I'd prefer it if this was not needed to run the test. As an optional aid for a truly > >bizarre setup, I think this is OK. But if /usr/lib/lmbench is the default location for > >lmbench assets (that is, the default install location), then I'd rather just auto- > >detect that the assets are there, rather than requiring the user to need to specify > >that path. > > I think adding default location is also good idea, as many of the distributions I have checked has the scripts located at '/usr/lib/lmbench' > > > > >On my Ubuntu 20.04 system, the lmbench package puts things all over the place: > >/usr/lib/lmbench/scripts/* > >/usr/lib/lmbench/bin/x86_64-linux-gnu/* > >/var/lib/lmbench/config > >/var/lib/lmbench/results > > > >And, a helper wrapper seems to be at /usr/bin/lmbench-run > > > >Can you tell me where the scripts, bin, config and results directories are for the > >lmbench package in your distribution? > >In particular, I'm curious if your config or results are under /usr/lib/lmbench or > >/var/lib/lmbench. It appears from this patch, that they are under > >/usr/lib/lmbench, as you use paths relative to SCRIPTS_DIR to access them. > > We use debian based distribution and in which the scripts, bin, config, directories are present under /usr/lib/lmbench/, > and results folder is under /usr/share/lmbench > > > > > > >Also, just as a note, the following is equivalent syntax for specifying a dynamic > >variable (and is a bit easier to read, IMHO): > >$ ftc run-test -b local -t Benchmark.lmbench2 -p ptrca \ > > --dynamic-vars SCRIPTS_PATH=/usr/lib/lmbench/scripts > > > >(Also, you don't need the 'Benchmark.' prefix on the test name anymore) > > > > Got it, thank you for letting me know. > > >> Signed-off-by: venkata pyla <[email protected]> > >> --- > >> tests/Benchmark.lmbench2/fuego_test.sh | 21 ++++++++++++--------- > >> 1 file changed, 12 insertions(+), 9 deletions(-) > >> > >> diff --git a/tests/Benchmark.lmbench2/fuego_test.sh > >> b/tests/Benchmark.lmbench2/fuego_test.sh > >> index d07606c..02a3b8e 100755 > >> --- a/tests/Benchmark.lmbench2/fuego_test.sh > >> +++ b/tests/Benchmark.lmbench2/fuego_test.sh > >> @@ -22,20 +22,23 @@ function test_deploy { } > >> > >> function test_run { > >> + if [ -z "$BENCHMARK_LMBENCH2_SCRIPTS_PATH" ]; then > >This conditional is OK, but I'd like to add some more autodetection here, when > >BENCHMARK_LMBENCH2_SCRIPTS_PATH is not set. > > > >> + SCRIPTS_PATH="$BOARD_TESTDIR/fuego.$TESTDIR/scripts" > >Can we add something here like this: > > > > if cmd "test ! -d $SCRIPTS_PATH" ; then > > SCRIPTS_PATH=/usr/lib/lmbench/scripts > > if cmd "test ! -d $SCRIPTS_PATH" ; then > > abort_job "Could not find lmbench scripts directory. Maybe > >specify SCRIPTS_PATH dynamic variable?" > > fi > > fi > > > >> + else > >> + SCRIPTS_PATH="$BENCHMARK_LMBENCH2_SCRIPTS_PATH" > >> + fi > >> + > >> # some trickery to get the directory right > >> if [ -n "$PREFIX" ] ; then > >> LMBENCH_OS=`ls ./bin` > >You should probably use this instead: > > LMBENCH_OS=$(cmd ls $SCRIPTS_PATH/bin) The previous command is > >run in the build directory, but I'm not sure that the build directory will be > >correctly populated in your use case. > > > > Thank you for the suggestion, I will correct this behaviour. > > >Just as a side note, I prefer the $() command syntax, over using backticks, to set > >shell variables from command output. > > > >> else > >> - LMBENCH_OS=`ls ./bin` > >> - echo "lmbench_os: $LMBENCH_OS" > >> - echo "curr path: $(pwd)" > >> - LMBENCH_OS=$(scripts/os) > >> - echo "lmbench_os: $LMBENCH_OS" > >> + get_program_path os $SCRIPTS_PATH > >$BOARD_TESTDIR/fuego.$TESTDIR/scripts/os > >> + LMBENCH_OS=$(safe_cmd "$PROGRAM_OS") > >This can be 'cmd' instead of 'safe_cmd'. > > > >safe_cmd should only be used if there's a significant chance of the command > >exhausting memory on the target board. You were perhaps misled by the other > >uses of 'safe_cmd' > >here, some of which should just be 'cmd'. > > > >> fi > >> - safe_cmd "rm -rf $BOARD_TESTDIR/fuego.$TESTDIR/results" > >> - safe_cmd "cd $BOARD_TESTDIR/fuego.$TESTDIR/scripts; > >OS=$LMBENCH_OS ./config-run" > >> - safe_cmd "cd $BOARD_TESTDIR/fuego.$TESTDIR/scripts; > >OS=$LMBENCH_OS ./results" > >> - report "cd $BOARD_TESTDIR/fuego.$TESTDIR/scripts; ./getsummary > >../results/$LMBENCH_OS/*.0" > >> + safe_cmd "rm -rf $SCRIPTS_PATH/../results" > >This should just be 'cmd'. (This incorrect usage was there before, but can you fix > >it in a second revision of your patch?) > > Sure I will change this in my next patch. > > > > >Also, this assumes the 'results' directory is relative to SCRIPTS_PATH, which is > >not true for my Ubuntu (/Debian) package for lmbench. > >Please consider using $RESULTS_DIR (see below) > > > >> + safe_cmd "cd $SCRIPTS_PATH; OS=$LMBENCH_OS ./config-run" > >> + safe_cmd "cd $SCRIPTS_PATH; OS=$LMBENCH_OS ./results" > >> + report "cd $SCRIPTS_PATH; ./getsummary ../results/$LMBENCH_OS/*.0" > > > >This structure assumes that the 'results' directory is underneath the > >SCRIPTS_PATH. > >Can you confirm that this is indeed the case for your test system? > > For the results directory I was using the same way how the source code compiled binaries were using, with reference to SCRIPTS_PATH. > If I introduce another variable RESILTS_DIR, then I think I can use the results directory from the distribution specified path only when the > distribution binaries are used, else use the path with reference to SCRIPTS_PATH. > > > > >I'm thinking about possibly autodetecting the 'results' directory also, if it's not > >found in the fuego test directory. This is just to handle a case like the Ubuntu > >package, where it puts results under /var/ instead of /usr. > > > >Maybe using something like this: > >RESULTS_DIR="$SCRIPTS_PATH/../results" > >if cmd "test ! -d $RESULTS_DIR" ; then > > RESULTS_RESULTS=/var/lib/lmbench/results > > if cmd "test ! -d $RESULTS_DIR" ; then > > abort_job "Could not find lmbench results directory. Maybe specify > >SCRIPTS_PATH dynamic variable?" > > fi > >fi > > > > I will verify this change and submit in my next version patch > > >> } > >> > >> function test_cleanup { > >> -- > >> 2.20.1 > >> > > > >I haven't tested any of my suggestions. Can you please respond to my above > >questions, and submit another version of this patch based on my suggestions (or > >let me know if you have alternative suggestions or feedback?) > > Sure, thank you for the review comments, I will update my patch and resend. > > > > >Thanks, > > -- Tim