This small testpmd test was not working for a long time because of several changes in EAL and mempool. The 3 main issues solved are: - Make --no-huge working by specifying an amount of memory to allocate in legacy mode, and disabling mlockall. - Load a mempool handler in shared library case. - Support meson Signed-off-by: Thomas Monjalon <thomas@monjalon.net> --- devtools/test-null.sh | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index 61879e3e6..59cb0606a 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -1,17 +1,26 @@ #! /bin/sh -e # SPDX-License-Identifier: BSD-3-Clause # Copyright 2015 6WIND S.A. +# Copyright 2019 Mellanox Technologies, Ltd # Run a quick testpmd forwarding with null PMD without hugepage build=${1:-build} coremask=${2:-3} # default using cores 0 and 1 -if grep -q SHARED_LIB=y $build/.config; then - pmd='-d librte_pmd_null.so' +testpmd=$build/app/dpdk-testpmd +[ -f $testpmd ] || testpmd=$build/app/testpmd +if [ ! -f $testpmd ] ; then + echo 'ERROR: testpmd cannot be found' >&2 + exit 1 +fi + +unset libs +if ldd $testpmd | grep -q librte_ ; then + libs='-d librte_mempool_ring.so -d librte_pmd_null.so' fi (sleep 1 && echo stop) | -$build/app/testpmd -c $coremask -n 1 --no-huge \ - $pmd --vdev net_null1 --vdev net_null2 -- \ - --total-num-mbufs=2048 -ia +$testpmd -c $coremask --no-huge -m 150 \ + $libs --vdev net_null1 --vdev net_null2 -- \ + --no-mlockall --total-num-mbufs=2048 -ia -- 2.21.0
This small testpmd test was not working for a long time because of several changes in EAL and mempool. The 3 main issues solved are: - Make --no-huge working by specifying an amount of memory to allocate in legacy mode, and disabling mlockall. - Load a mempool handler in shared library case. - Support meson Signed-off-by: Thomas Monjalon <thomas@monjalon.net> --- devtools/test-null.sh | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index 61879e3e6..6928a6c15 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -1,17 +1,26 @@ #! /bin/sh -e # SPDX-License-Identifier: BSD-3-Clause # Copyright 2015 6WIND S.A. +# Copyright 2019 Mellanox Technologies, Ltd # Run a quick testpmd forwarding with null PMD without hugepage build=${1:-build} coremask=${2:-3} # default using cores 0 and 1 -if grep -q SHARED_LIB=y $build/.config; then - pmd='-d librte_pmd_null.so' +testpmd=$build/app/dpdk-testpmd +[ -f "$testpmd" ] || testpmd=$build/app/testpmd +if [ ! -f "$testpmd" ] ; then + echo 'ERROR: testpmd cannot be found' >&2 + exit 1 +fi + +unset libs +if ldd $testpmd | grep -q librte_ ; then + libs='-d librte_mempool_ring.so -d librte_pmd_null.so' fi (sleep 1 && echo stop) | -$build/app/testpmd -c $coremask -n 1 --no-huge \ - $pmd --vdev net_null1 --vdev net_null2 -- \ - --total-num-mbufs=2048 -ia +$testpmd -c $coremask --no-huge -m 150 \ + $libs --vdev net_null1 --vdev net_null2 -- \ + --no-mlockall --total-num-mbufs=2048 -ia -- 2.21.0
In order to ease basic testing with customized options, EAL and testpmd options can be added as third and fourth arguments of the "null PMD" script. Also, the first argument becomes more flexible by accepting the testpmd path as an alternative to the build directory. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> --- devtools/test-null.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index 6928a6c15..69eddc359 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -5,10 +5,13 @@ # Run a quick testpmd forwarding with null PMD without hugepage -build=${1:-build} +build=${1:-build} # first argument can be the build directory +testpmd=$1 # or first argument can be the testpmd path coremask=${2:-3} # default using cores 0 and 1 +eal_options=$3 +testpmd_options=$4 -testpmd=$build/app/dpdk-testpmd +[ -f "$testpmd" ] || testpmd=$build/app/dpdk-testpmd [ -f "$testpmd" ] || testpmd=$build/app/testpmd if [ ! -f "$testpmd" ] ; then echo 'ERROR: testpmd cannot be found' >&2 @@ -22,5 +25,5 @@ fi (sleep 1 && echo stop) | $testpmd -c $coremask --no-huge -m 150 \ - $libs --vdev net_null1 --vdev net_null2 -- \ - --no-mlockall --total-num-mbufs=2048 -ia + $libs --vdev net_null1 --vdev net_null2 $eal_options -- \ + --no-mlockall --total-num-mbufs=2048 $testpmd_options -ia -- 2.21.0
On Wed, Jul 17, 2019 at 5:53 PM Thomas Monjalon <thomas@monjalon.net> wrote: > > This small testpmd test was not working for a long time > because of several changes in EAL and mempool. > The 3 main issues solved are: > - Make --no-huge working by specifying an amount of memory > to allocate in legacy mode, and disabling mlockall. > - Load a mempool handler in shared library case. > - Support meson > > Signed-off-by: Thomas Monjalon <thomas@monjalon.net> > --- > devtools/test-null.sh | 19 ++++++++++++++----- > 1 file changed, 14 insertions(+), 5 deletions(-) > > diff --git a/devtools/test-null.sh b/devtools/test-null.sh > index 61879e3e6..6928a6c15 100755 > --- a/devtools/test-null.sh > +++ b/devtools/test-null.sh > @@ -1,17 +1,26 @@ > #! /bin/sh -e > # SPDX-License-Identifier: BSD-3-Clause > # Copyright 2015 6WIND S.A. > +# Copyright 2019 Mellanox Technologies, Ltd > > # Run a quick testpmd forwarding with null PMD without hugepage > > build=${1:-build} > coremask=${2:-3} # default using cores 0 and 1 > > -if grep -q SHARED_LIB=y $build/.config; then > - pmd='-d librte_pmd_null.so' > +testpmd=$build/app/dpdk-testpmd > +[ -f "$testpmd" ] || testpmd=$build/app/testpmd > +if [ ! -f "$testpmd" ] ; then You don't really care that testpmd is a file, prefer -e. > + echo 'ERROR: testpmd cannot be found' >&2 > + exit 1 > +fi > + > +unset libs You reference it later, I suppose you meant libs= > +if ldd $testpmd | grep -q librte_ ; then > + libs='-d librte_mempool_ring.so -d librte_pmd_null.so' > fi > > (sleep 1 && echo stop) | > -$build/app/testpmd -c $coremask -n 1 --no-huge \ > - $pmd --vdev net_null1 --vdev net_null2 -- \ > - --total-num-mbufs=2048 -ia > +$testpmd -c $coremask --no-huge -m 150 \ > + $libs --vdev net_null1 --vdev net_null2 -- \ > + --no-mlockall --total-num-mbufs=2048 -ia > -- > 2.21.0 > -- David Marchand
On Wed, Jul 17, 2019 at 5:53 PM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> In order to ease basic testing with customized options,
> EAL and testpmd options can be added as third and fourth arguments
> of the "null PMD" script.
>
> Also, the first argument becomes more flexible by accepting
> the testpmd path as an alternative to the build directory.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> devtools/test-null.sh | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/devtools/test-null.sh b/devtools/test-null.sh
> index 6928a6c15..69eddc359 100755
> --- a/devtools/test-null.sh
> +++ b/devtools/test-null.sh
> @@ -5,10 +5,13 @@
>
> # Run a quick testpmd forwarding with null PMD without hugepage
>
> -build=${1:-build}
> +build=${1:-build} # first argument can be the build directory
> +testpmd=$1 # or first argument can be the testpmd path
> coremask=${2:-3} # default using cores 0 and 1
> +eal_options=$3
> +testpmd_options=$4
>
> -testpmd=$build/app/dpdk-testpmd
> +[ -f "$testpmd" ] || testpmd=$build/app/dpdk-testpmd
> [ -f "$testpmd" ] || testpmd=$build/app/testpmd
> if [ ! -f "$testpmd" ] ; then
> echo 'ERROR: testpmd cannot be found' >&2
> @@ -22,5 +25,5 @@ fi
>
> (sleep 1 && echo stop) |
> $testpmd -c $coremask --no-huge -m 150 \
> - $libs --vdev net_null1 --vdev net_null2 -- \
> - --no-mlockall --total-num-mbufs=2048 -ia
> + $libs --vdev net_null1 --vdev net_null2 $eal_options -- \
> + --no-mlockall --total-num-mbufs=2048 $testpmd_options -ia
> --
> 2.21.0
>
Not sure I would have split this from the first patch.
Out of curiosity, what are the cases where you need to set options?
--
David Marchand
29/07/2019 12:35, David Marchand: > On Wed, Jul 17, 2019 at 5:53 PM Thomas Monjalon <thomas@monjalon.net> wrote: > > --- a/devtools/test-null.sh > > +++ b/devtools/test-null.sh > > -if grep -q SHARED_LIB=y $build/.config; then > > - pmd='-d librte_pmd_null.so' > > +testpmd=$build/app/dpdk-testpmd > > +[ -f "$testpmd" ] || testpmd=$build/app/testpmd > > +if [ ! -f "$testpmd" ] ; then > > You don't really care that testpmd is a file, prefer -e. Yes I care, I want to avoid finding a directory. > > + echo 'ERROR: testpmd cannot be found' >&2 > > + exit 1 > > +fi > > + > > +unset libs > > You reference it later, I suppose you meant libs= I think "unset libs" is the standard syntax to initialize a variable to an empty value. > > +if ldd $testpmd | grep -q librte_ ; then > > + libs='-d librte_mempool_ring.so -d librte_pmd_null.so' > > fi
29/07/2019 12:36, David Marchand: > On Wed, Jul 17, 2019 at 5:53 PM Thomas Monjalon <thomas@monjalon.net> wrote: > > > > In order to ease basic testing with customized options, > > EAL and testpmd options can be added as third and fourth arguments > > of the "null PMD" script. > > > > Also, the first argument becomes more flexible by accepting > > the testpmd path as an alternative to the build directory. > > > > Signed-off-by: Thomas Monjalon <thomas@monjalon.net> > > Not sure I would have split this from the first patch. Patches have different intents, different explanations. > Out of curiosity, what are the cases where you need to set options? It allows to test different builds with a specific option, and see which one is failing. For instance, it was useful when debugging a failure with -w option recently.
On Mon, Jul 29, 2019 at 2:16 PM Thomas Monjalon <thomas@monjalon.net> wrote: > > 29/07/2019 12:35, David Marchand: > > On Wed, Jul 17, 2019 at 5:53 PM Thomas Monjalon <thomas@monjalon.net> wrote: > > > --- a/devtools/test-null.sh > > > +++ b/devtools/test-null.sh > > > -if grep -q SHARED_LIB=y $build/.config; then > > > - pmd='-d librte_pmd_null.so' > > > +testpmd=$build/app/dpdk-testpmd > > > +[ -f "$testpmd" ] || testpmd=$build/app/testpmd > > > +if [ ! -f "$testpmd" ] ; then > > > > You don't really care that testpmd is a file, prefer -e. > > Yes I care, I want to avoid finding a directory. Ok, as long as we don't hit symbolic links. > > > > + echo 'ERROR: testpmd cannot be found' >&2 > > > + exit 1 > > > +fi > > > + > > > +unset libs > > > > You reference it later, I suppose you meant libs= > > I think "unset libs" is the standard syntax to initialize a variable > to an empty value. Nop, unset and initialising to empty are different, but the way you use this works. > > > +if ldd $testpmd | grep -q librte_ ; then > > > + libs='-d librte_mempool_ring.so -d librte_pmd_null.so' > > > fi > > -- David Marchand
On Mon, Jul 29, 2019 at 2:19 PM Thomas Monjalon <thomas@monjalon.net> wrote: > > 29/07/2019 12:36, David Marchand: > > On Wed, Jul 17, 2019 at 5:53 PM Thomas Monjalon <thomas@monjalon.net> wrote: > > > > > > In order to ease basic testing with customized options, > > > EAL and testpmd options can be added as third and fourth arguments > > > of the "null PMD" script. > > > > > > Also, the first argument becomes more flexible by accepting > > > the testpmd path as an alternative to the build directory. > > > > > > Signed-off-by: Thomas Monjalon <thomas@monjalon.net> > > > > Not sure I would have split this from the first patch. > > Patches have different intents, different explanations. You could have split the discovery of the testpmd binary out of the first patch (the fix on meson support, as you named it). Then merged it with this part that accepts both a directory and a direct path. We are in a dark area there, and well the patches are not that critical, so go as you like. > > Out of curiosity, what are the cases where you need to set options? > > It allows to test different builds with a specific option, > and see which one is failing. > For instance, it was useful when debugging a failure with -w option recently. > Ok. -- David Marchand
This small testpmd test was not working for a long time because of several changes in EAL and mempool. The 3 main issues solved are: - Make --no-huge working by specifying an amount of memory to allocate in legacy mode, and disabling mlockall. - Load a mempool handler in shared library case. - Support meson Signed-off-by: Thomas Monjalon <thomas@monjalon.net> --- v3: do not use "unset" to init a variable (David) --- devtools/test-null.sh | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index 61879e3e6..73bbded89 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -1,17 +1,27 @@ #! /bin/sh -e # SPDX-License-Identifier: BSD-3-Clause # Copyright 2015 6WIND S.A. +# Copyright 2019 Mellanox Technologies, Ltd # Run a quick testpmd forwarding with null PMD without hugepage build=${1:-build} coremask=${2:-3} # default using cores 0 and 1 -if grep -q SHARED_LIB=y $build/.config; then - pmd='-d librte_pmd_null.so' +testpmd=$build/app/dpdk-testpmd +[ -f "$testpmd" ] || testpmd=$build/app/testpmd +if [ ! -f "$testpmd" ] ; then + echo 'ERROR: testpmd cannot be found' >&2 + exit 1 +fi + +if ldd $testpmd | grep -q librte_ ; then + libs='-d librte_mempool_ring.so -d librte_pmd_null.so' +else + libs= fi (sleep 1 && echo stop) | -$build/app/testpmd -c $coremask -n 1 --no-huge \ - $pmd --vdev net_null1 --vdev net_null2 -- \ - --total-num-mbufs=2048 -ia +$testpmd -c $coremask --no-huge -m 150 \ + $libs --vdev net_null1 --vdev net_null2 -- \ + --no-mlockall --total-num-mbufs=2048 -ia -- 2.21.0
In order to ease basic testing with customized options, EAL and testpmd options can be added as third and fourth arguments of the "null PMD" script. Also, the first argument becomes more flexible by accepting the testpmd path as an alternative to the build directory. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> --- devtools/test-null.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index 73bbded89..9f9a459f7 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -5,10 +5,13 @@ # Run a quick testpmd forwarding with null PMD without hugepage -build=${1:-build} +build=${1:-build} # first argument can be the build directory +testpmd=$1 # or first argument can be the testpmd path coremask=${2:-3} # default using cores 0 and 1 +eal_options=$3 +testpmd_options=$4 -testpmd=$build/app/dpdk-testpmd +[ -f "$testpmd" ] || testpmd=$build/app/dpdk-testpmd [ -f "$testpmd" ] || testpmd=$build/app/testpmd if [ ! -f "$testpmd" ] ; then echo 'ERROR: testpmd cannot be found' >&2 @@ -23,5 +26,5 @@ fi (sleep 1 && echo stop) | $testpmd -c $coremask --no-huge -m 150 \ - $libs --vdev net_null1 --vdev net_null2 -- \ - --no-mlockall --total-num-mbufs=2048 -ia + $libs --vdev net_null1 --vdev net_null2 $eal_options -- \ + --no-mlockall --total-num-mbufs=2048 $testpmd_options -ia -- 2.21.0
30/07/2019 19:34, Thomas Monjalon:
> In order to ease basic testing with customized options,
> EAL and testpmd options can be added as third and fourth arguments
> of the "null PMD" script.
>
> Also, the first argument becomes more flexible by accepting
> the testpmd path as an alternative to the build directory.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Applied