[LTP] [Patch V2] lib: multiply the max_runtime if detect kernel debug options

Li Wang liwang@redhat.com
Mon Dec 9 07:36:00 CET 2024


Hi Petr,

On Mon, Dec 9, 2024 at 12:43 PM Petr Vorel <pvorel@suse.cz> wrote:

> Hi Li, Cyril,
>
> > The method adjusts the max_runtime for test cases by multiplying
> > it by a factor (4x) if any debug kernel options are detected.
> > Debug kernel configurations (such as CONFIG_KASAN, CONFIG_PROVE_LOCKING,
> etc.)
> > are known to degrade performance, and this adjustment ensures
> > that tests do not fail prematurely due to timeouts.
>
> > As Cyril pointed out that a debug kernel will typically run
> > slower by a factor of N, and while determining the exact value
> > of N is challenging, so a reasonable upper bound is sufficient
> > for practical purposes.
>
> > Signed-off-by: Li Wang <liwang@redhat.com>
> > ---
>
> > Notes:
> >     Hi, @Cyril, @Petr, I have no openSUSE and Ubuntu at my hands, could
> you
> >     help check if the debug configures are useful to the other two
> platforms?
> >     Or, should we add any more options there? Thanks.
>
> openSUSE debug kernel:
>
> $ grep ^CONFIG_DEBUG /boot/config-6.13.0-rc1-1.g492f944-debug # openSUSE
> Tumbleweed
> CONFIG_DEBUG_RSEQ=y
> CONFIG_DEBUG_GPIO=y
> CONFIG_DEBUG_BUGVERBOSE=y
> CONFIG_DEBUG_KERNEL=y
> CONFIG_DEBUG_MISC=y
> CONFIG_DEBUG_INFO=y
> CONFIG_DEBUG_INFO_DWARF5=y
> CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
> CONFIG_DEBUG_INFO_BTF=y
> CONFIG_DEBUG_INFO_BTF_MODULES=y
> CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
> CONFIG_DEBUG_FS=y
> CONFIG_DEBUG_FS_ALLOW_ALL=y
> CONFIG_DEBUG_NET=y
> CONFIG_DEBUG_PAGEALLOC=y
> CONFIG_DEBUG_RODATA_TEST=y
> CONFIG_DEBUG_MEMORY_INIT=y
> CONFIG_DEBUG_SHIRQ=y
> CONFIG_DEBUG_RT_MUTEXES=y
> CONFIG_DEBUG_SPINLOCK=y
> CONFIG_DEBUG_MUTEXES=y
>
> => openSUSE debug kernel would be detected by:
> CONFIG_DEBUG_NET=y
> CONFIG_DEBUG_PAGEALLOC=y
> CONFIG_DEBUG_RT_MUTEXES=y
> CONFIG_DEBUG_SPINLOCK=y
> CONFIG_DEBUG_MUTEXES=y
>
>
Thanks for much for providing these.


=> if you want to add more:
> CONFIG_DEBUG_RSEQ=y
> CONFIG_DEBUG_GPIO=y
> CONFIG_DEBUG_RODATA_TEST=y
> CONFIG_DEBUG_SHIRQ=y
>

Those kernel debug options on performance are generally less severe
compared to options like CONFIG_KASAN or CONFIG_PROVE_LOCKING.

We would like to recognize some configs that obviously lower the system
speed.



>
> Also FYI some options from default kernel (to see which cannot be used):
>
> $ grep ^CONFIG_DEBUG /boot/config-6.13.0-rc1-1.g492f944-default # openSUSE
> Tumbleweed
> CONFIG_DEBUG_BUGVERBOSE=y
> CONFIG_DEBUG_KERNEL=y
> CONFIG_DEBUG_MISC=y
> CONFIG_DEBUG_INFO=y
> CONFIG_DEBUG_INFO_DWARF5=y
> CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
> CONFIG_DEBUG_INFO_BTF=y
> CONFIG_DEBUG_INFO_BTF_MODULES=y
> CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
> CONFIG_DEBUG_FS=y
> CONFIG_DEBUG_FS_ALLOW_ALL=y
> CONFIG_DEBUG_PAGEALLOC=y
> CONFIG_DEBUG_MEMORY_INIT=y
>
> $ grep ^CONFIG_DEBUG /boot/config-6.11.10-amd64 # Debian
> CONFIG_DEBUG_BUGVERBOSE=y
> CONFIG_DEBUG_KERNEL=y
> CONFIG_DEBUG_MISC=y
> CONFIG_DEBUG_INFO=y
> CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
> CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
> CONFIG_DEBUG_INFO_BTF=y
> CONFIG_DEBUG_INFO_BTF_MODULES=y
> CONFIG_DEBUG_FS=y
> CONFIG_DEBUG_FS_ALLOW_ALL=y
> CONFIG_DEBUG_WX=y
> CONFIG_DEBUG_MEMORY_INIT=y
> CONFIG_DEBUG_LIST=y
>
> Do Debian/Ubuntu even have debug kernel? I know only about
> linux-image-amd64-dbg
> [1], but that package has just debugging symbols.
>

Maybe we shouldn't declare that the purpose is to debug kernel,
any kernel build with the slower configs should impacted.



>
> Which tests should I run on the kernel to see if timeout is ok?
>

Any test with set .max_runtime you can try, for this patch our original
work is for starvation.c but now it is generic.



>
> Kind regards,
> Petr
>
> [1] https://packages.debian.org/sid/linux-image-amd64-dbg
>
> ...
> > +/*
> > + * List of debug-kernel config options that may degrade performance
> when enabled.
> > + */
> > +static const char * const tst_kconf_debug_options[][2] = {
> > +     {"CONFIG_PROVE_LOCKING=y", NULL},
> > +     {"CONFIG_LOCKDEP=y", NULL},
> > +     {"CONFIG_DEBUG_SPINLOCK=y", NULL},
> > +     {"CONFIG_DEBUG_RT_MUTEXES=y", NULL},
> > +     {"CONFIG_DEBUG_MUTEXES=y", NULL},
> > +     {"CONFIG_DEBUG_PAGEALLOC=y", NULL},
> > +     {"CONFIG_KASAN=y", NULL},
> > +     {"CONFIG_SLUB_RCU_DEBUG=y", NULL},
> > +     {"CONFIG_TRACE_IRQFLAGS=y", NULL},
> > +     {"CONFIG_LATENCYTOP=y", NULL},
> > +     {"CONFIG_DEBUG_NET=y", NULL},
> > +     {"CONFIG_EXT4_DEBUG=y", NULL},
> > +     {"CONFIG_QUOTA_DEBUG=y", NULL},
> > +     {"CONFIG_FAULT_INJECTION=y", NULL},
> > +     {"CONFIG_DEBUG_OBJECTS=y", NULL},
> > +     {NULL, NULL}
> ...
>
>

-- 
Regards,
Li Wang


More information about the ltp mailing list