DPDK patches and discussions
 help / color / mirror / Atom feed
From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
To: David Marchand <david.marchand@redhat.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Cc: "aconole@redhat.com" <aconole@redhat.com>,
	"blo@iol.unh.edu" <blo@iol.unh.edu>,
	"bruce.richardson@intel.com" <bruce.richardson@intel.com>,
	 nd <nd@arm.com>,
	Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>,
	nd <nd@arm.com>
Subject: Re: [dpdk-dev] [PATCH v2] test: rely on EAL detection for core list
Date: Tue, 19 Oct 2021 14:46:40 +0000	[thread overview]
Message-ID: <DBAPR08MB581451AB3960AE5009AF46BC98BD9@DBAPR08MB5814.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <20211019112602.17782-1-david.marchand@redhat.com>

<snip>

> 
> Cores count has a direct impact on the time needed to complete unit tests.
We also need to control the number of iterations with in the tests.

We could add something like "-i low/medium/high". The test cases then can use this to decide on how many iterations to run.

> 
> Currently, the core list used for unit test is enforced to "all cores on the
> system" with no way for (CI) users to adapt it.
> On the other hand, EAL default behavior (when no -c/-l option gets passed) is
> to start threads on as many cores available in the process cpu affinity.
> 
> Remove logic from meson: users can then select where to run the tests by
> either running meson with a custom cpu affinity (using taskset/cpuset
> depending on OS) or by passing a --test-args option to meson.
> 
> Example:
> $ sudo meson test -C build --suite fast-tests -t 3 --test-args "-l 0-3"
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> Changes since v1:
> - updated documentation,
> 
> ---
>  app/test/get-coremask.sh           | 13 -------------
>  app/test/meson.build               | 10 +---------
>  doc/guides/prog_guide/meson_ut.rst | 17 ++++++++++++++++-
>  3 files changed, 17 insertions(+), 23 deletions(-)  delete mode 100755
> app/test/get-coremask.sh
> 
> diff --git a/app/test/get-coremask.sh b/app/test/get-coremask.sh deleted file
> mode 100755 index bb8cf404d2..0000000000
> --- a/app/test/get-coremask.sh
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -#! /bin/sh -e
> -# SPDX-License-Identifier: BSD-3-Clause -# Copyright(c) 2019 Intel
> Corporation
> -
> -if [ "$(uname)" = "Linux" ] ; then
> -	cat /sys/devices/system/cpu/present
> -elif [ "$(uname)" = "FreeBSD" ] ; then
> -	ncpus=$(/sbin/sysctl -n hw.ncpu)
> -	echo 0-$(expr $ncpus - 1)
> -else
> -# fallback
> -	echo 0-3
> -fi
> diff --git a/app/test/meson.build b/app/test/meson.build index
> a16374b7a1..c7b377d52d 100644
> --- a/app/test/meson.build
> +++ b/app/test/meson.build
> @@ -463,13 +463,8 @@ message('hugepage availability:
> @0@'.format(has_hugepage))  timeout_seconds = 600  timeout_seconds_fast
> = 10
> 
> -get_coremask = find_program('get-coremask.sh') -num_cores_arg = '-l ' +
> run_command(get_coremask).stdout().strip()
> -
> -default_test_args = [num_cores_arg]
> -
>  foreach arg : fast_tests
> -    test_args = default_test_args
> +    test_args = []
>      run_test = true
>      if not has_hugepage
>          if arg[1]
> @@ -502,7 +497,6 @@ endforeach
>  foreach arg : perf_test_names
>      test(arg, dpdk_test,
>              env : ['DPDK_TEST=' + arg],
> -            args : default_test_args,
>              timeout : timeout_seconds,
>              is_parallel : false,
>              suite : 'perf-tests')
> @@ -511,7 +505,6 @@ endforeach
>  foreach arg : driver_test_names
>      test(arg, dpdk_test,
>              env : ['DPDK_TEST=' + arg],
> -            args : default_test_args,
>              timeout : timeout_seconds,
>              is_parallel : false,
>              suite : 'driver-tests')
> @@ -520,7 +513,6 @@ endforeach
>  foreach arg : dump_test_names
>      test(arg, dpdk_test,
>              env : ['DPDK_TEST=' + arg],
> -            args : default_test_args,
>              timeout : timeout_seconds,
>              is_parallel : false,
>              suite : 'debug-tests')
> diff --git a/doc/guides/prog_guide/meson_ut.rst
> b/doc/guides/prog_guide/meson_ut.rst
> index fff88655dd..78cf3f845c 100644
> --- a/doc/guides/prog_guide/meson_ut.rst
> +++ b/doc/guides/prog_guide/meson_ut.rst
> @@ -37,6 +37,14 @@ command::
> 
>      $ meson test --suite fast-tests
> 
> +If desired, additional arguments can be passed to the test run via the
> +meson ``--test-args`` option.
> +For example, tests will by default run on as many available cores as is
> +needed for the test, starting with the lowest number core - generally core 0.
> +To run the fast-tests suite using only cores 8 through 16, one can use::
> +
> +    $ meson test --suite fast-tests --test-args="-l 8-16"
> +
>  The meson command to list all available tests::
> 
>      $ meson test --list
> @@ -47,9 +55,16 @@ Arguments of ``test()`` that can be provided in
> meson.build are as below:
> 
>  * ``is_parallel`` is used to run test case either in parallel or non-parallel mode.
>  * ``timeout`` is used to specify the timeout of test case.
> -* ``args`` is used to specify test specific parameters.
> +* ``args`` is used to specify test specific parameters (see note below).
>  * ``env`` is used to specify test specific environment parameters.
> 
> +Note: the content of meson ``--test-args`` option and the content of
> +``args`` are appended when invoking the DPDK test binary.
> +Because of this, it is recommended not to set any default coremask or
> +memory configuration in per test ``args`` and rather let users select
> +what best fits their environment. If a test can't run, then it should
> +be skipped, as described below.
> +
> 
>  Dealing with skipped test cases
>  -------------------------------
> --
> 2.23.0


  parent reply	other threads:[~2021-10-19 14:46 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-18 17:01 [dpdk-dev] [PATCH] " David Marchand
2021-10-18 17:53 ` Bruce Richardson
2021-10-19  9:52   ` David Marchand
2021-10-19 10:04     ` Bruce Richardson
2021-10-19 11:26 ` [dpdk-dev] [PATCH v2] " David Marchand
2021-10-19 12:43   ` Bruce Richardson
2021-10-19 14:46   ` Honnappa Nagarahalli [this message]
2021-10-19 15:04     ` David Marchand
2021-10-19 18:04       ` Honnappa Nagarahalli
2021-10-19 19:09   ` Aaron Conole
2021-10-19 19:28     ` David Marchand
2021-10-20 11:20       ` David Marchand
2021-10-21 14:50     ` David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DBAPR08MB581451AB3960AE5009AF46BC98BD9@DBAPR08MB5814.eurprd08.prod.outlook.com \
    --to=honnappa.nagarahalli@arm.com \
    --cc=aconole@redhat.com \
    --cc=blo@iol.unh.edu \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=nd@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).