[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: CONFIG_PREEMPT_DYNAMIC=y?



Hi Diederik,

On 2023-10-10 01:54, Diederik de Haas wrote:
> On Tuesday, 10 October 2023 12:10:07 CEST Emanuele Rocca wrote:
> > CONFIG_PREEMPT_DYNAMIC is set to 'y' by default on amd64 due to
> > HAVE_PREEMPT_DYNAMIC_CALL being 'y', see:
> > https://sources.debian.org/src/linux/6.5.6-1/kernel/Kconfig.preempt/?hl=101#
> > L101
> > 
> > arm64 does not have PREEMPT_DYNAMIC_CALL, this is why PREEMPT_DYNAMIC is
> > not set by default there.
> 
> Neither does amd64. So it appears something else is causing 
> CONFIG_PREEMPT_DYNAMIC to be enabled on amd64.

Here is where HAVE_PREEMPT_DYNAMIC_CALL is set on x86:
https://sources.debian.org/src/linux/6.5.6-1/arch/x86/Kconfig/?hl=271#L271

> I think it should be explicitly enabled (or disabled) and not be it dependent
> on some other, possibly unrelated, Kconfig option being enabled

Right, but HAVE_PREEMPT_DYNAMIC_CALL is not a config option. It's a
setting that defines whether the architecture can use inline static
calls to handle the preemption model passed to the kernel command line
with preempt=

To my understanding, only x86 can do that. From the PREEMPT_DYNAMIC
Kconfig help:

 The runtime overhead is negligible with HAVE_STATIC_CALL_INLINE enabled
 but if runtime patching is not available for the specific architecture
 then the potential overhead should be considered.

> ad 1) I _think_ running benchmarks is not that useful as its result will/should
> vary based on the default preemption model and whether that is overridden
> on the kernel command line

Sorry, I wasn't clear in my previous message about what we should be
benchmarking. The current Debian kernel on arm64 has PREEMPT_VOLUNTARY=y
and PREEMPT_DYNAMIC not set. We want to run benchmarks to see if a
kernel with PREEMPT_DYNAMIC=y booted with preempt=voluntary has any
significant slowdowns compared to the current kernels. We don't want to
benchmark the various preemption models.


Reply to: