[v3,2/4] ci: generate fast-tests suite base on hugepage availability

Message ID 20200313081614.195335-3-ruifeng.wang@arm.com (mailing list archive)
State Superseded, archived
Delegated to: David Marchand
Headers
Series no-huge unit test |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ruifeng Wang March 13, 2020, 8:16 a.m. UTC
  In environments where hugepage are not available, such as
containers, many cases in fast-tests suite should also run
if no-huge EAL option is used.

Flag is appended to each case in fast-tests suite to indicate
whether it lives with no-huge mode.
With the flag, fast-tests suite can be generated based on
detected hugepage availability of building environment.
All cases will be valid if hugepage is available, whereas
only applicable cases will be added if environment has no
hugepage support.

Suggested-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
---
 app/test/meson.build | 216 ++++++++++++++++++++++++-------------------
 1 file changed, 120 insertions(+), 96 deletions(-)
  

Comments

Aaron Conole March 17, 2020, 12:50 p.m. UTC | #1
Ruifeng Wang <ruifeng.wang@arm.com> writes:

> In environments where hugepage are not available, such as
> containers, many cases in fast-tests suite should also run
> if no-huge EAL option is used.
>
> Flag is appended to each case in fast-tests suite to indicate
> whether it lives with no-huge mode.
> With the flag, fast-tests suite can be generated based on
> detected hugepage availability of building environment.
> All cases will be valid if hugepage is available, whereas
> only applicable cases will be added if environment has no
> hugepage support.
>
> Suggested-by: Aaron Conole <aconole@redhat.com>
> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> ---

Acked-by: Aaron Conole <aconole@redhat.com>
  
David Marchand March 23, 2020, 8:56 a.m. UTC | #2
On Fri, Mar 13, 2020 at 9:17 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote:
>
> In environments where hugepage are not available, such as
> containers, many cases in fast-tests suite should also run
> if no-huge EAL option is used.
>
> Flag is appended to each case in fast-tests suite to indicate
> whether it lives with no-huge mode.
> With the flag, fast-tests suite can be generated based on
> detected hugepage availability of building environment.
> All cases will be valid if hugepage is available, whereas
> only applicable cases will be added if environment has no
> hugepage support.
>
> Suggested-by: Aaron Conole <aconole@redhat.com>
> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> ---
>  app/test/meson.build | 216 ++++++++++++++++++++++++-------------------
>  1 file changed, 120 insertions(+), 96 deletions(-)
>
> diff --git a/app/test/meson.build b/app/test/meson.build
> index 0a2ce710f..dd121a297 100644
> --- a/app/test/meson.build
> +++ b/app/test/meson.build
> @@ -154,87 +154,89 @@ test_deps = ['acl',
>         'timer'
>  ]
>
> +# Each test is marked with flag true/false
> +# to indicate whether it can run in no-huge mode.
>  fast_test_names = [

Nit: this variable does not contain a list of names anymore, how about
"fast_tests".

> -        'acl_autotest',
> -        'alarm_autotest',
> -        'atomic_autotest',
[snip]
> +        ['acl_autotest', true],
> +        ['alarm_autotest', false],
> +        ['atomic_autotest', false],

[snip]

> @@ -395,6 +397,17 @@ dpdk_test = executable('dpdk-test',
>         install_rpath: driver_install_path,
>         install: true)
>
> +has_hugepage = true
> +if host_machine.system() == 'linux'

We have is_OS helpers, here it should be if is_linux.


> +       check_hugepage = run_command('cat',
> +                                    '/proc/sys/vm/nr_hugepages')
> +       if (check_hugepage.returncode() != 0 or
> +           check_hugepage.stdout().strip() == '0')
> +               has_hugepage = false
> +       endif
> +endif
> +message('hugepage availbility: @0@'.format(has_hugepage))

availability*

> +
>  # some perf tests (eg: memcpy perf autotest)take very long
>  # to complete, so timeout to 10 minutes
>  timeout_seconds = 600
> @@ -407,22 +420,33 @@ test_args = [num_cores_arg]
>
>  foreach arg : fast_test_names
>         if (get_option('default_library') == 'shared' and
> -               arg == 'event_eth_tx_adapter_autotest')
> +               arg[0] == 'event_eth_tx_adapter_autotest')
>                 foreach drv:dpdk_drivers
>                         test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
>                 endforeach
>         endif
>         if host_machine.system() == 'linux'
> -               test(arg, dpdk_test,
> -                         env : ['DPDK_TEST=' + arg],
> -                         args : test_args +
> -                                ['--file-prefix=@0@'.format(arg)],
> -               timeout : timeout_seconds_fast,
> -               is_parallel : false,
> -               suite : 'fast-tests')
> +               if has_hugepage
> +                       test(arg[0], dpdk_test,
> +                                 env : ['DPDK_TEST=' + arg[0]],
> +                                 args : test_args +
> +                                        ['--file-prefix=@0@'.format(arg[0])],
> +                       timeout : timeout_seconds_fast,
> +                       is_parallel : false,
> +                       suite : 'fast-tests')
> +               elif arg[1]
> +                       test(arg[0], dpdk_test,
> +                                 env : ['DPDK_TEST=' + arg[0]],
> +                                 args : test_args +
> +                                        ['--no-huge'] + ['-m 2048'] +
> +                                        ['--file-prefix=@0@'.format(arg[0])],
> +                       timeout : timeout_seconds_fast,
> +                       is_parallel : false,
> +                       suite : 'fast-tests')
> +               endif
>         else
> -               test(arg, dpdk_test,
> -                       env : ['DPDK_TEST=' + arg],
> +               test(arg[0], dpdk_test,
> +                       env : ['DPDK_TEST=' + arg[0]],
>                         args : test_args,
>                 timeout : timeout_seconds_fast,
>                 is_parallel : false,


Not a fan of these conditionals.

I sent a little patch fixing an issue I spotted on test_args:
http://patchwork.dpdk.org/patch/67026/

I rebased this series on it, see:
https://github.com/david-marchand/dpdk/commits/ci

This makes the code easier to read from my pov:
https://github.com/david-marchand/dpdk/blob/ci/app/test/meson.build#L421

If you are fine with it, I can post a v4 series.
  
David Marchand March 23, 2020, 9:32 a.m. UTC | #3
On Mon, Mar 23, 2020 at 9:56 AM David Marchand
<david.marchand@redhat.com> wrote:
> I rebased this series on it, see:
> https://github.com/david-marchand/dpdk/commits/ci
>
> This makes the code easier to read from my pov:
> https://github.com/david-marchand/dpdk/blob/ci/app/test/meson.build#L421

First time I see this error:
https://travis-ci.com/github/david-marchand/dpdk/jobs/301063161#L8410

Did you encounter it?
  
Ruifeng Wang March 23, 2020, 3:36 p.m. UTC | #4
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Monday, March 23, 2020 16:57
> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; Aaron Conole
> <aconole@redhat.com>
> Cc: Michael Santana <maicolgabriel@hotmail.com>; Bruce Richardson
> <bruce.richardson@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; Cristian Dumitrescu
> <cristian.dumitrescu@intel.com>; Wang, Yipeng1
> <yipeng1.wang@intel.com>; Gobriel, Sameh <sameh.gobriel@intel.com>;
> dev <dev@dpdk.org>; Burakov, Anatoly <anatoly.burakov@intel.com>;
> Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd
> <nd@arm.com>
> Subject: Re: [PATCH v3 2/4] ci: generate fast-tests suite base on hugepage
> availability
> 
> On Fri, Mar 13, 2020 at 9:17 AM Ruifeng Wang <ruifeng.wang@arm.com>
> wrote:
> >
> > In environments where hugepage are not available, such as containers,
> > many cases in fast-tests suite should also run if no-huge EAL option
> > is used.
> >
> > Flag is appended to each case in fast-tests suite to indicate whether
> > it lives with no-huge mode.
> > With the flag, fast-tests suite can be generated based on detected
> > hugepage availability of building environment.
> > All cases will be valid if hugepage is available, whereas only
> > applicable cases will be added if environment has no hugepage support.
> >
> > Suggested-by: Aaron Conole <aconole@redhat.com>
> > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
> > Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> > ---
> >  app/test/meson.build | 216
> > ++++++++++++++++++++++++-------------------
> >  1 file changed, 120 insertions(+), 96 deletions(-)
> >
> > diff --git a/app/test/meson.build b/app/test/meson.build index
> > 0a2ce710f..dd121a297 100644
> > --- a/app/test/meson.build
> > +++ b/app/test/meson.build
> > @@ -154,87 +154,89 @@ test_deps = ['acl',
> >         'timer'
> >  ]
> >
> > +# Each test is marked with flag true/false # to indicate whether it
> > +can run in no-huge mode.
> >  fast_test_names = [
> 
> Nit: this variable does not contain a list of names anymore, how about
> "fast_tests".

I'm OK with it.

> 
> > -        'acl_autotest',
> > -        'alarm_autotest',
> > -        'atomic_autotest',
> [snip]
> > +        ['acl_autotest', true],
> > +        ['alarm_autotest', false],
> > +        ['atomic_autotest', false],
> 
> [snip]
> 
> > @@ -395,6 +397,17 @@ dpdk_test = executable('dpdk-test',
> >         install_rpath: driver_install_path,
> >         install: true)
> >
> > +has_hugepage = true
> > +if host_machine.system() == 'linux'
> 
> We have is_OS helpers, here it should be if is_linux.

OK.

> 
> 
> > +       check_hugepage = run_command('cat',
> > +                                    '/proc/sys/vm/nr_hugepages')
> > +       if (check_hugepage.returncode() != 0 or
> > +           check_hugepage.stdout().strip() == '0')
> > +               has_hugepage = false
> > +       endif
> > +endif
> > +message('hugepage availbility: @0@'.format(has_hugepage))
> 
> availability*
> 
> > +
> >  # some perf tests (eg: memcpy perf autotest)take very long  # to
> > complete, so timeout to 10 minutes  timeout_seconds = 600 @@ -407,22
> > +420,33 @@ test_args = [num_cores_arg]
> >
> >  foreach arg : fast_test_names
> >         if (get_option('default_library') == 'shared' and
> > -               arg == 'event_eth_tx_adapter_autotest')
> > +               arg[0] == 'event_eth_tx_adapter_autotest')
> >                 foreach drv:dpdk_drivers
> >                         test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
> >                 endforeach
> >         endif
> >         if host_machine.system() == 'linux'
> > -               test(arg, dpdk_test,
> > -                         env : ['DPDK_TEST=' + arg],
> > -                         args : test_args +
> > -                                ['--file-prefix=@0@'.format(arg)],
> > -               timeout : timeout_seconds_fast,
> > -               is_parallel : false,
> > -               suite : 'fast-tests')
> > +               if has_hugepage
> > +                       test(arg[0], dpdk_test,
> > +                                 env : ['DPDK_TEST=' + arg[0]],
> > +                                 args : test_args +
> > +                                        ['--file-prefix=@0@'.format(arg[0])],
> > +                       timeout : timeout_seconds_fast,
> > +                       is_parallel : false,
> > +                       suite : 'fast-tests')
> > +               elif arg[1]
> > +                       test(arg[0], dpdk_test,
> > +                                 env : ['DPDK_TEST=' + arg[0]],
> > +                                 args : test_args +
> > +                                        ['--no-huge'] + ['-m 2048'] +
> > +                                        ['--file-prefix=@0@'.format(arg[0])],
> > +                       timeout : timeout_seconds_fast,
> > +                       is_parallel : false,
> > +                       suite : 'fast-tests')
> > +               endif
> >         else
> > -               test(arg, dpdk_test,
> > -                       env : ['DPDK_TEST=' + arg],
> > +               test(arg[0], dpdk_test,
> > +                       env : ['DPDK_TEST=' + arg[0]],
> >                         args : test_args,
> >                 timeout : timeout_seconds_fast,
> >                 is_parallel : false,
> 
> 
> Not a fan of these conditionals.
> 
> I sent a little patch fixing an issue I spotted on test_args:
> http://patchwork.dpdk.org/patch/67026/
> 
> I rebased this series on it, see:
> https://github.com/david-marchand/dpdk/commits/ci
> 
> This makes the code easier to read from my pov:
> https://github.com/david-
> marchand/dpdk/blob/ci/app/test/meson.build#L421
> 
> If you are fine with it, I can post a v4 series.

Sure, I'm fine with it.
Thanks.
/Ruifeng
> 
> 
> --
> David Marchand
  
Ruifeng Wang March 23, 2020, 3:50 p.m. UTC | #5
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Monday, March 23, 2020 17:33
> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; Aaron Conole
> <aconole@redhat.com>
> Cc: Michael Santana <maicolgabriel@hotmail.com>; Bruce Richardson
> <bruce.richardson@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; Cristian Dumitrescu
> <cristian.dumitrescu@intel.com>; Wang, Yipeng1
> <yipeng1.wang@intel.com>; Gobriel, Sameh <sameh.gobriel@intel.com>;
> dev <dev@dpdk.org>; Burakov, Anatoly <anatoly.burakov@intel.com>;
> Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd
> <nd@arm.com>
> Subject: Re: [PATCH v3 2/4] ci: generate fast-tests suite base on hugepage
> availability
> 
> On Mon, Mar 23, 2020 at 9:56 AM David Marchand
> <david.marchand@redhat.com> wrote:
> > I rebased this series on it, see:
> > https://github.com/david-marchand/dpdk/commits/ci
> >
> > This makes the code easier to read from my pov:
> > https://github.com/david-
> marchand/dpdk/blob/ci/app/test/meson.build#L4
> > 21
> 
> First time I see this error:
> https://travis-ci.com/github/david-marchand/dpdk/jobs/301063161#L8410
> 
> Did you encounter it?

First time for me to see this as well.
Not sure how often it will happen. Looks like clock was not stable?
I'll need time to check this part.

Thanks.
/Ruifeng
> 
> 
> --
> David Marchand
  
David Marchand March 28, 2020, 4:17 p.m. UTC | #6
Hello Ruifeng,

On Mon, Mar 23, 2020 at 4:50 PM Ruifeng Wang <Ruifeng.Wang@arm.com> wrote:
> > First time I see this error:
> > https://travis-ci.com/github/david-marchand/dpdk/jobs/301063161#L8410
> >
> > Did you encounter it?
>
> First time for me to see this as well.
> Not sure how often it will happen. Looks like clock was not stable?
> I'll need time to check this part.

Fyi, caught on master:
https://travis-ci.com/github/DPDK/dpdk/jobs/305880147#L8685
  
Ruifeng Wang March 30, 2020, 4:03 p.m. UTC | #7
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Sunday, March 29, 2020 00:18
> To: Ruifeng Wang <Ruifeng.Wang@arm.com>
> Cc: Aaron Conole <aconole@redhat.com>; Michael Santana
> <maicolgabriel@hotmail.com>; Bruce Richardson
> <bruce.richardson@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; dev <dev@dpdk.org>; Burakov, Anatoly
> <anatoly.burakov@intel.com>; Gavin Hu <Gavin.Hu@arm.com>; Honnappa
> Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com>
> Subject: Re: [PATCH v3 2/4] ci: generate fast-tests suite base on hugepage
> availability
> 
> Hello Ruifeng,
> 
> On Mon, Mar 23, 2020 at 4:50 PM Ruifeng Wang <Ruifeng.Wang@arm.com>
> wrote:
> > > First time I see this error:
> > > https://travis-ci.com/github/david-
> marchand/dpdk/jobs/301063161#L8410
> > >
> > > Did you encounter it?
> >
> > First time for me to see this as well.
> > Not sure how often it will happen. Looks like clock was not stable?
> > I'll need time to check this part.
> 
> Fyi, caught on master:
> https://travis-ci.com/github/DPDK/dpdk/jobs/305880147#L8685
> 
Thanks for the notice.
I tried to reproduce this locally, but haven't duplicated the issue.
I didn't see issue from DPDK API perspective. 
Maybe we will remove this case from no-huge run to avoid Travis failure.

/Ruifeng
> 
> 
> --
> David Marchand
  
David Marchand April 10, 2020, 12:25 p.m. UTC | #8
On Mon, Mar 30, 2020 at 6:03 PM Ruifeng Wang <Ruifeng.Wang@arm.com> wrote:
>
>
> > -----Original Message-----
> > From: David Marchand <david.marchand@redhat.com>
> > Sent: Sunday, March 29, 2020 00:18
> > To: Ruifeng Wang <Ruifeng.Wang@arm.com>
> > Cc: Aaron Conole <aconole@redhat.com>; Michael Santana
> > <maicolgabriel@hotmail.com>; Bruce Richardson
> > <bruce.richardson@intel.com>; Ananyev, Konstantin
> > <konstantin.ananyev@intel.com>; dev <dev@dpdk.org>; Burakov, Anatoly
> > <anatoly.burakov@intel.com>; Gavin Hu <Gavin.Hu@arm.com>; Honnappa
> > Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com>
> > Subject: Re: [PATCH v3 2/4] ci: generate fast-tests suite base on hugepage
> > availability
> >
> > Hello Ruifeng,
> >
> > On Mon, Mar 23, 2020 at 4:50 PM Ruifeng Wang <Ruifeng.Wang@arm.com>
> > wrote:
> > > > First time I see this error:
> > > > https://travis-ci.com/github/david-
> > marchand/dpdk/jobs/301063161#L8410
> > > >
> > > > Did you encounter it?
> > >
> > > First time for me to see this as well.
> > > Not sure how often it will happen. Looks like clock was not stable?
> > > I'll need time to check this part.
> >
> > Fyi, caught on master:
> > https://travis-ci.com/github/DPDK/dpdk/jobs/305880147#L8685
> >
> Thanks for the notice.
> I tried to reproduce this locally, but haven't duplicated the issue.

Running in containers is likely to have an effect.
Maybe try to run concurrently a busy loop on the cores running the test?

Btw, I noticed a new kind of timeout:
https://travis-ci.com/github/ovsrobot/dpdk/jobs/318096284#L3231


> I didn't see issue from DPDK API perspective.
> Maybe we will remove this case from no-huge run to avoid Travis failure.

I prefer we fix the tests.
  

Patch

diff --git a/app/test/meson.build b/app/test/meson.build
index 0a2ce710f..dd121a297 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -154,87 +154,89 @@  test_deps = ['acl',
 	'timer'
 ]
 
+# Each test is marked with flag true/false
+# to indicate whether it can run in no-huge mode.
 fast_test_names = [
-        'acl_autotest',
-        'alarm_autotest',
-        'atomic_autotest',
-        'byteorder_autotest',
-        'cmdline_autotest',
-        'common_autotest',
-        'cpuflags_autotest',
-        'cycles_autotest',
-        'debug_autotest',
-        'eal_flags_c_opt_autotest',
-        'eal_flags_master_opt_autotest',
-        'eal_flags_n_opt_autotest',
-        'eal_flags_hpet_autotest',
-        'eal_flags_no_huge_autotest',
-        'eal_flags_w_opt_autotest',
-        'eal_flags_b_opt_autotest',
-        'eal_flags_vdev_opt_autotest',
-        'eal_flags_r_opt_autotest',
-        'eal_flags_mem_autotest',
-        'eal_flags_file_prefix_autotest',
-        'eal_flags_misc_autotest',
-        'eal_fs_autotest',
-        'errno_autotest',
-        'event_ring_autotest',
-        'fib_autotest',
-        'fib6_autotest',
-        'func_reentrancy_autotest',
-        'flow_classify_autotest',
-        'hash_autotest',
-        'interrupt_autotest',
-        'logs_autotest',
-        'lpm_autotest',
-        'lpm6_autotest',
-        'malloc_autotest',
-        'mbuf_autotest',
-        'mcslock_autotest',
-        'memcpy_autotest',
-        'memory_autotest',
-        'mempool_autotest',
-        'memzone_autotest',
-        'meter_autotest',
-        'multiprocess_autotest',
-        'per_lcore_autotest',
-        'prefetch_autotest',
-        'rcu_qsbr_autotest',
-        'red_autotest',
-        'rib_autotest',
-        'rib6_autotest',
-        'ring_autotest',
-        'rwlock_test1_autotest',
-        'rwlock_rda_autotest',
-        'rwlock_rds_wrm_autotest',
-        'rwlock_rde_wro_autotest',
-        'sched_autotest',
-        'spinlock_autotest',
-        'stack_autotest',
-        'stack_lf_autotest',
-        'string_autotest',
-        'table_autotest',
-        'tailq_autotest',
-        'timer_autotest',
-        'user_delay_us',
-        'version_autotest',
-        'crc_autotest',
-        'delay_us_sleep_autotest',
-        'distributor_autotest',
-        'eventdev_common_autotest',
-        'fbarray_autotest',
-        'hash_readwrite_func_autotest',
-        'ipsec_autotest',
-        'kni_autotest',
-        'kvargs_autotest',
-        'member_autotest',
-        'metrics_autotest',
-        'power_cpufreq_autotest',
-        'power_autotest',
-        'power_kvm_vm_autotest',
-        'reorder_autotest',
-        'service_autotest',
-        'thash_autotest',
+        ['acl_autotest', true],
+        ['alarm_autotest', false],
+        ['atomic_autotest', false],
+        ['byteorder_autotest', true],
+        ['cmdline_autotest', true],
+        ['common_autotest', true],
+        ['cpuflags_autotest', true],
+        ['cycles_autotest', true],
+        ['debug_autotest', true],
+        ['eal_flags_c_opt_autotest', false],
+        ['eal_flags_master_opt_autotest', false],
+        ['eal_flags_n_opt_autotest', false],
+        ['eal_flags_hpet_autotest', false],
+        ['eal_flags_no_huge_autotest', false],
+        ['eal_flags_w_opt_autotest', false],
+        ['eal_flags_b_opt_autotest', false],
+        ['eal_flags_vdev_opt_autotest', false],
+        ['eal_flags_r_opt_autotest', false],
+        ['eal_flags_mem_autotest', false],
+        ['eal_flags_file_prefix_autotest', false],
+        ['eal_flags_misc_autotest', false],
+        ['eal_fs_autotest', true],
+        ['errno_autotest', true],
+        ['event_ring_autotest', true],
+        ['fib_autotest', true],
+        ['fib6_autotest', true],
+        ['func_reentrancy_autotest', false],
+        ['flow_classify_autotest', false],
+        ['hash_autotest', true],
+        ['interrupt_autotest', true],
+        ['logs_autotest', true],
+        ['lpm_autotest', true],
+        ['lpm6_autotest', true],
+        ['malloc_autotest', false],
+        ['mbuf_autotest', false],
+        ['mcslock_autotest', false],
+        ['memcpy_autotest', true],
+        ['memory_autotest', false],
+        ['mempool_autotest', false],
+        ['memzone_autotest', false],
+        ['meter_autotest', true],
+        ['multiprocess_autotest', false],
+        ['per_lcore_autotest', true],
+        ['prefetch_autotest', true],
+        ['rcu_qsbr_autotest', true],
+        ['red_autotest', true],
+        ['rib_autotest', true],
+        ['rib6_autotest', true],
+        ['ring_autotest', true],
+        ['rwlock_test1_autotest', true],
+        ['rwlock_rda_autotest', true],
+        ['rwlock_rds_wrm_autotest', true],
+        ['rwlock_rde_wro_autotest', true],
+        ['sched_autotest', true],
+        ['spinlock_autotest', true],
+        ['stack_autotest', false],
+        ['stack_lf_autotest', false],
+        ['string_autotest', true],
+        ['table_autotest', true],
+        ['tailq_autotest', true],
+        ['timer_autotest', false],
+        ['user_delay_us', true],
+        ['version_autotest', true],
+        ['crc_autotest', true],
+        ['delay_us_sleep_autotest', true],
+        ['distributor_autotest', false],
+        ['eventdev_common_autotest', true],
+        ['fbarray_autotest', true],
+        ['hash_readwrite_func_autotest', false],
+        ['ipsec_autotest', true],
+        ['kni_autotest', false],
+        ['kvargs_autotest', true],
+        ['member_autotest', true],
+        ['metrics_autotest', true],
+        ['power_cpufreq_autotest', false],
+        ['power_autotest', true],
+        ['power_kvm_vm_autotest', false],
+        ['reorder_autotest', true],
+        ['service_autotest', true],
+        ['thash_autotest', true],
 ]
 
 perf_test_names = [
@@ -334,13 +336,13 @@  if dpdk_conf.has('RTE_LIBRTE_RING_PMD')
 	test_sources += 'test_link_bonding_mode4.c'
 	test_sources += 'sample_packet_forward.c'
 	test_sources += 'test_pdump.c'
-	fast_test_names += 'ring_pmd_autotest'
+	fast_test_names += [['ring_pmd_autotest', true]]
 	perf_test_names += 'ring_pmd_perf_autotest'
-	fast_test_names += 'event_eth_tx_adapter_autotest'
-	fast_test_names += 'bitratestats_autotest'
-	fast_test_names += 'latencystats_autotest'
+	fast_test_names += [['event_eth_tx_adapter_autotest', false]]
+	fast_test_names += [['bitratestats_autotest', true]]
+	fast_test_names += [['latencystats_autotest', true]]
 	driver_test_names += 'link_bonding_mode4_autotest'
-	fast_test_names += 'pdump_autotest'
+	fast_test_names += [['pdump_autotest', true]]
 endif
 
 if dpdk_conf.has('RTE_LIBRTE_POWER')
@@ -368,7 +370,7 @@  if dpdk_conf.has('RTE_LIBRTE_COMPRESSDEV')
 		test_dep_objs += compress_test_dep
 		test_sources += 'test_compressdev.c'
 		test_deps += 'compressdev'
-		fast_test_names += 'compressdev_autotest'
+		fast_test_names += [['compressdev_autotest', false]]
 	endif
 endif
 
@@ -395,6 +397,17 @@  dpdk_test = executable('dpdk-test',
 	install_rpath: driver_install_path,
 	install: true)
 
+has_hugepage = true
+if host_machine.system() == 'linux'
+	check_hugepage = run_command('cat',
+				     '/proc/sys/vm/nr_hugepages')
+	if (check_hugepage.returncode() != 0 or
+	    check_hugepage.stdout().strip() == '0')
+		has_hugepage = false
+	endif
+endif
+message('hugepage availbility: @0@'.format(has_hugepage))
+
 # some perf tests (eg: memcpy perf autotest)take very long
 # to complete, so timeout to 10 minutes
 timeout_seconds = 600
@@ -407,22 +420,33 @@  test_args = [num_cores_arg]
 
 foreach arg : fast_test_names
 	if (get_option('default_library') == 'shared' and
-		arg == 'event_eth_tx_adapter_autotest')
+		arg[0] == 'event_eth_tx_adapter_autotest')
 		foreach drv:dpdk_drivers
 			test_args += ['-d', drv.full_path().split('.a')[0] + '.so']
 		endforeach
 	endif
 	if host_machine.system() == 'linux'
-		test(arg, dpdk_test,
-			  env : ['DPDK_TEST=' + arg],
-			  args : test_args +
-				 ['--file-prefix=@0@'.format(arg)],
-		timeout : timeout_seconds_fast,
-		is_parallel : false,
-		suite : 'fast-tests')
+		if has_hugepage
+			test(arg[0], dpdk_test,
+				  env : ['DPDK_TEST=' + arg[0]],
+				  args : test_args +
+					 ['--file-prefix=@0@'.format(arg[0])],
+			timeout : timeout_seconds_fast,
+			is_parallel : false,
+			suite : 'fast-tests')
+		elif arg[1]
+			test(arg[0], dpdk_test,
+				  env : ['DPDK_TEST=' + arg[0]],
+				  args : test_args +
+					 ['--no-huge'] + ['-m 2048'] +
+					 ['--file-prefix=@0@'.format(arg[0])],
+			timeout : timeout_seconds_fast,
+			is_parallel : false,
+			suite : 'fast-tests')
+		endif
 	else
-		test(arg, dpdk_test,
-			env : ['DPDK_TEST=' + arg],
+		test(arg[0], dpdk_test,
+			env : ['DPDK_TEST=' + arg[0]],
 			args : test_args,
 		timeout : timeout_seconds_fast,
 		is_parallel : false,