[LTP] [PATCH v2] sched_football: synchronize with kickoff flag to reduce skew

Li Wang liwang@redhat.com
Fri Sep 5 09:36:48 CEST 2025


On Fri, Sep 5, 2025 at 3:31 PM Petr Vorel <pvorel@suse.cz> wrote:

> > Hi all,
>
> > ...
> > > Checking the configurations of the stock kernel and the real-time
> > > kernel, the stock kernel uses "CONFIG_PREEMPT_VOLUNTARY=y,"
> > > which only provides voluntary preemption.
>
> > Yes, CONFIG_PREEMPT_VOLUNTARY=y is in all mainline defconfigs
> > (arch/*/configs/*_defconfig). Therefore we have it in our Tumbleweed
> (6.16.3-1)
> > and in upcoming SLES16 (6.12 based). SLE15-SP7 (6.4 based) use
> > CONFIG_PREEMPT_NONE=y instead.
>
> > Looking at the history It works well on all archs, we just recently had a
> > problem with ppc64le hmc on SLE16 (regular ppc64le works). Later I'll
> check
> > history of older SLES versions.
>
> > And most importantly I'll try to run manually with -i (more stress test).
>
> > > This preemption model is designed to strike a balance between
> throughput
> > > and latency. It only allows the kernel to be preempted at specific,
> well
> > > defined
> > > "safe points," potentially resulting in long, unbounded latencies.
>
> > > However, the sched_football test was most likely designed to measure or
> > > stress-test the deterministic, low-latency scheduling behavior that is
> > > characteristic of real-time (RT) kernel.
>
> > > So, I tend to believe the test's failure on the stock kernel is
> acceptable.
> > > And, by the way, what does the SUSE kernel configuration look like?
>
>
> > > # grep CONFIG_PREEMPT /boot/config-6.12.0-55.29.1.el10_0.x86_64
> > > CONFIG_PREEMPT_BUILD=y
> > > CONFIG_PREEMPT_VOLUNTARY=y
> > > # CONFIG_PREEMPT is not set
> > > # CONFIG_PREEMPT_RT is not set
> > > CONFIG_PREEMPT_COUNT=y
> > > CONFIG_PREEMPTION=y
> > > CONFIG_PREEMPT_DYNAMIC=y
> > > CONFIG_PREEMPT_RCU=y
> > > CONFIG_PREEMPT_NOTIFIERS=y
>
> > > (^ I built my v6.17-rc4 with this config too)
>
> > /boot/config-6.12.0-160000.4-default # Tumbleweed x68_64
> > CONFIG_PREEMPT_BUILD=y
> > # CONFIG_PREEMPT_NONE is not set
> > CONFIG_PREEMPT_VOLUNTARY=y
> > # CONFIG_PREEMPT is not set
> > # CONFIG_PREEMPT_LAZY is not set
> > # CONFIG_PREEMPT_RT is not set
> > CONFIG_PREEMPT_COUNT=y
> > CONFIG_PREEMPTION=y
> > CONFIG_PREEMPT_DYNAMIC=y
> > CONFIG_PREEMPT_RCU=y
> > CONFIG_PREEMPT_NOTIFIERS=y
> > # CONFIG_PREEMPT_TRACER is not set
> > CONFIG_PREEMPTIRQ_DELAY_TEST=m
>
> > Upcoming SLE16 is similar to Tumbleweed.
>
> > /boot/config-6.4.0-150700.714.ga8e7017-default # SLE15-SP7 x86_64 RT
> > CONFIG_PREEMPT_BUILD=y
> > CONFIG_PREEMPT_NONE=y
> > # CONFIG_PREEMPT_VOLUNTARY is not set
> > # CONFIG_PREEMPT is not set
> > # CONFIG_PREEMPT_RT is not set
> > CONFIG_PREEMPT_COUNT=y
> > CONFIG_PREEMPTION=y
> > CONFIG_PREEMPT_DYNAMIC=y
> > CONFIG_PREEMPT_RCU=y
> > CONFIG_PREEMPT_NOTIFIERS=y
> > # CONFIG_PREEMPT_TRACER is not set
> > CONFIG_PREEMPTIRQ_DELAY_TEST=m
>
> > /boot/config-6.4.0-150700.5-rt # SLE15-SP7 x86_64 RT
> > CONFIG_PREEMPT_LAZY=y
> > # CONFIG_PREEMPT_NONE is not set
> > # CONFIG_PREEMPT_VOLUNTARY is not set
> > # CONFIG_PREEMPT is not set
> > CONFIG_PREEMPT_RT=y
> > CONFIG_PREEMPT_COUNT=y
> > CONFIG_PREEMPTION=y
> > CONFIG_PREEMPT_RCU=y
> > CONFIG_PREEMPT_NOTIFIERS=y
> > # CONFIG_PREEMPT_TRACER is not set
> > CONFIG_PREEMPTIRQ_DELAY_TEST=m
>
> And looking on some other distros, e.g. Debian had
> CONFIG_PREEMPT_VOLUNTARY=y on
> 6.12.38+deb13 (from recently released stable Debian 13 trixie), but they
> changed
> it to CONFIG_PREEMPT_LAZY=y in 6.16.3+deb14 (for upcoming Debian forky
> (testing)
> - in devel for now). I would expect that setup for RT kernel.
>
> > Kind regards,
> > Petr
>
> > > # grep CONFIG_PREEMPT /boot/config-6.12.0-55.31.1.el10_0.x86_64+rt
> > > CONFIG_PREEMPT_BUILD=y
> > > CONFIG_PREEMPT=y
> > > CONFIG_PREEMPT_RT=y
> > > CONFIG_PREEMPT_COUNT=y
> > > CONFIG_PREEMPTION=y
> > > # CONFIG_PREEMPT_DYNAMIC is not set
> > > CONFIG_PREEMPT_RCU=y
> > > CONFIG_PREEMPT_NOTIFIERS=y
>
> I suppose this RT kernel has CONFIG_PREEMPT_LAZY=y, right?
>

Not exactly, I removed some unenabling options when posting.
It has 'CONFIG_ARCH_HAS_PREEMPT_LAZY'.

The full preempt config looks like:

# grep PREEMPT /boot/config-6.12.0-55.31.1.el10_0.x86_64+rt
CONFIG_PREEMPT_BUILD=y
CONFIG_ARCH_HAS_PREEMPT_LAZY=y
CONFIG_PREEMPT=y
# CONFIG_PREEMPT_LAZY is not set
# CONFIG_PREEMPT_LAZIEST is not set
CONFIG_PREEMPT_RT=y
CONFIG_PREEMPT_COUNT=y
CONFIG_PREEMPTION=y
# CONFIG_PREEMPT_DYNAMIC is not set
CONFIG_PREEMPT_RCU=y
CONFIG_HAVE_PREEMPT_DYNAMIC=y
CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500
CONFIG_DRM_XE_PREEMPT_TIMEOUT=640000
CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX=10000000
CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN=1
CONFIG_DEBUG_PREEMPT=y
# CONFIG_PREEMPT_TRACER is not set
# CONFIG_PREEMPTIRQ_DELAY_TEST is not set


> Kind regards,
> Petr
>
>

-- 
Regards,
Li Wang


More information about the ltp mailing list