Re: [PATCH 0/5] sched: Make CONFIG_SCHED_DEBUG features unconditional
From: Valentin Schneider
Date: Wed Mar 19 2025 - 04:49:37 EST
On 17/03/25 11:42, Ingo Molnar wrote:
> For more than a decade, CONFIG_SCHED_DEBUG=y has been enabled
> in all the major Linux distributions:
>
> /boot/config-6.11.0-19-generic:CONFIG_SCHED_DEBUG=y
>
> The reason is that while originally CONFIG_SCHED_DEBUG started
> out as a debugging feature, over the years (decades ...) it has
> grown various bits of statistics, instrumentation and
> control knobs that are useful for sysadmin and general software
> development purposes as well.
>
> But within the kernel we still pretend that there's a choice,
> and sometimes code that is seemingly 'debug only' creates overhead
> that should be optimized in reality.
>
> So make it all official and make CONFIG_SCHED_DEBUG unconditional.
> This gets rid of a large amount of #ifdefs, so good riddance ...
>
Pretty much every distro I'm aware of has CONFIG_SCHED_DEBUG=y; a quick check
tells me it's been like so for RHEL since at least 2013, and that's from a
commit copying configs from RHEL-6 to RHEL-7.
Two things however come to mind:
1) What does this mean for the debug stuff we've repeatedly said wasn't ABI
because it was under CONFIG_SCHED_DEBUG? I've been burned by making
sched_domain.flags read-only, and there's still writable stuff:
# ls -al /sys/kernel/debug/sched/domains/cpu0/domain0/
total 0
drwxr-xr-x. 2 root root 0 Mar 19 04:36 .
drwxr-xr-x. 3 root root 0 Mar 19 04:36 ..
-rw-r--r--. 1 root root 0 Mar 19 04:36 busy_factor
-rw-r--r--. 1 root root 0 Mar 19 04:36 cache_nice_tries
-r--r--r--. 1 root root 0 Mar 19 04:36 flags
-r--r--r--. 1 root root 0 Mar 19 04:36 groups_flags
-rw-r--r--. 1 root root 0 Mar 19 04:36 imbalance_pct
-r--r--r--. 1 root root 0 Mar 19 04:36 level
-rw-r--r--. 1 root root 0 Mar 19 04:36 max_interval
-rw-r--r--. 1 root root 0 Mar 19 04:36 max_newidle_lb_cost
-rw-r--r--. 1 root root 0 Mar 19 04:36 min_interval
-r--r--r--. 1 root root 0 Mar 19 04:36 name
+ all the non topology related debug knobs.
2) Peter mentioned a few times that, last time it was benchmarked, there
were noticeable perf differences between CONFIG_SCHED_DEBUG=n and
CONFIG_SCHED_DEBUG=y. This would be an occasion to re-measure that and
potentially move (some of) these checks to e.g. a sched_debug_verbose
static key.