[dpdk-dev] [RFC 1/3] test/meson: auto detect number of cores
Aaron Conole
aconole at redhat.com
Mon Apr 1 16:07:14 CEST 2019
David Marchand <david.marchand at redhat.com> writes:
Thanks for the review, David!
> On Fri, Mar 29, 2019 at 6:23 PM Aaron Conole <aconole at redhat.com> wrote:
>
> Some environments do not provide a minimum 4 cores for running tests. This
> allows those environments to still execute 'ninja test' without causing
> multiple failures.
>
> Signed-off-by: Aaron Conole <aconole at redhat.com>
> ---
> app/test/meson.build | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/app/test/meson.build b/app/test/meson.build
> index ddb4d09ae..975b38daa 100644
> --- a/app/test/meson.build
> +++ b/app/test/meson.build
> @@ -337,10 +337,15 @@ if get_option('tests')
> timeout_seconds = 600
> timeout_seconds_fast = 10
>
> + # Retreive the number of CPU cores
> + num_cores = run_command('lscpu', '-p=cpu').stdout().strip().split('\n')[-1]
> + num_cores_arg = '-l 0-' + num_cores
>
> Seeing how we can reduce the core number, we can at least cap it to 4 and not use all the cores on bigger
> systems.
> But, thinking again, do you know if there is a need for more than 2 cores in the existing tests ?
Probably not. At least, the systems in the travis environment only
provide 2 cores and most of the tests pass. OTOH, some still fail and I
need to investigate them a bit more. Some of the test case failures are
ex. eal flags failures and maybe they do pass some '-c f' as part of
the test case, which would fail on systems without 4 cores.
> +
> + test_args = [num_cores_arg, '-n 4']
Whoops! I think, this '-n 4' option can probably be removed as well. I
think the memory channel config is optional, and I believe there's no
need to try and tune it.
> foreach arg : fast_parallel_test_names
> test(arg, dpdk_test,
> env : ['DPDK_TEST=' + arg],
> - args : ['-c f','-n 4', '--file-prefix=@0@'.format(arg)],
> + args : test_args + ['--file-prefix=@0@'.format(arg)],
> timeout : timeout_seconds_fast,
> suite : 'fast-tests')
> endforeach
> @@ -348,6 +353,7 @@ if get_option('tests')
> foreach arg : fast_non_parallel_test_names
> test(arg, dpdk_test,
> env : ['DPDK_TEST=' + arg],
> + args : test_args + ['--file-prefix=@0@'.format(arg)],
>
> I don't understand this part.
>
> (How|) was it working before ?
It did work before.
> Is there some default args ? I could not find it.
I think it does try to do some auto-detection. I did extend this
because it seemed to make sense, and I have some future work to allow
passing '--no-huge' (in case we have a CI system that doesn't allow
allocating hugepages). Maybe it doesn't make sense to add that right
now, though. I'll try without it.
> timeout : timeout_seconds_fast,
> is_parallel : false,
> suite : 'fast-tests')
More information about the dev
mailing list