Why did 6.1 longterm branch change the CONFIG_PREEMPT setting?

I found that the linux-lts kernel (6.1 longterm branch) has different preemption settings than the following and previous kernels.

package linux-lts has:

CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_PREEMPT is not set

package linux has:

# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y

And it looks like that this change was made specifically for the LTS kernel when it became LTS.

What is the reason for this? Will this change also be made to the 6.5 or 6.6 kernel when it becomes the next LTS?

from the link you posted:

- set CONFIG_PREEMPT_VOLUNTARY as new default - PREEMPT_DYNAMIC is now available
  and desired behavior can be choosen using kernel append line

as there is no issue mentioned, I guess that’s all the information that is available.

6.5 won’t be the new LTS. 6.6 could theoretically become a LTS kernel, but so could 6.7.
For that and for the remaining question:

I found this link and I read it and it gives no reason why the settings fo an LTsSkernel are different. The previous kernels and the following kernels all have

CONFIG_PREEMPT_VOLUNTARY not set

I was asking this question here because we have experts in the forum who are closer to the Arch devs or kernel devs. And they may know more about the topic. But thank you for your contribution.

See here. This was not able to be inplemented in kernel 5.15 but was enabled with 6.1 - the logic being “Enabling CONFIG_PREEMPT_DYNAMIC=y is a clear all around benefit allowing system administrators to choose the best mode for their use case [from the kernel config line].”

6.1 when it was linux did not change that setting:

you are expecting something that simply is not there. The LTS kernel is maintained by a completely different maintainer than the other two official kernels. Therefore, they also follow different philosophies and configs.
Maintainers of the regular kernel:
Jan Alexander Steffens
David Runge
Tobias Powalowski
Levente Polyak

Maintainer of the Zen-Kernel:
Jan Alexander Steffens
David Runge
Although both are practically exclusively maintained by Heftig.

LTS Kernel Maintainer:
Andreas Radke

the LTS kernel maintainer clearly sees that as a valid reason to change the default for the LTS kernel, while the other maintainers don’t see the necessity (or no one raised that issue for the other kernels).

This is an interesting read. Thank you for the link. Although the comments on this page are not making things clearer.

The maintainer Andreas Radke is saying:

And default CONFIG_PREEMPT=y (low latency desktop) is not desired for LTS kernels.

How come? I would say that this is an opinion based on the assumption that LTS kernels are for servers. And servers dont want CONFIG_PREEMPT=y. Well, that is debatable.

Anyways, I find it very confusing that an official arch kernel is changing the config if it is moving from linux to linux-lts. That does not make sense to me. A server admin can easily change the preemption on the kernel commandline, thanks to CONFIG_PREEMPT_DYNAMIC=y, but all the arch desktop users should not need to do that. In fact I am pretty sure that they do not even know that they have to do that to get the same system responsiveness as always.

2 Likes

Not sure that’s the reason, but if it is…I’m not a server, yet i want it for my lts kernel! :rofl:

I would say that’s probably correct - or rather, LTS kernels are probably more likely to be the kernel used on servers.

Well, yeah :smile:.

bingo_new

ok. so that leaves me with another question then.

If I add to the kernel comandline of the lts kernel preempt=full

How can I tell that the setting is active and not just sillently ignored? I gave it a try but I do not see any hint in the journal that preemption has changed. How can I check that?

EDIT:

I found the answer:

cat /sys/kernel/debug/sched/preempt
none voluntary (full)

Thx for mentioning all that, kinda big deal for it to get unnoticed…

honka_animated-128px-46

1 Like

well …

that is the only guideline that all Arch maintainers have to follow, and it is rather vague:
https://wiki.archlinux.org/title/Arch_package_guidelines