It is such an upgrade! Thank you.
Indy and the Quest for the 6.12 Kernel
In the world of bytes where imaginations soar,
Lives a curious soul, Indy, exploring the core.
With a heart full of questions and a mind sharp as steel,
He seeks out the truth that the developers conceal.
In Clear Linux, where performance shines bright,
A kernel named 6.12 dances just out of sight.
Indy wonders aloud, with a furrowed brow,
“When will this marvel reveal itself now?”
It’s not just a date that he wishes to find,
But a puzzle of factors, complex and entwined.
With features and fixes, security tight,
The answer is cloaked in the shadows of night.
The cycles of coding, the whispers of change,
In the world of development, timelines are strange.
So tell me, dear friend, what does Indy crave?
A glimpse of the future, a kernel to save.
What is the answer, both near and afar?
In the depths of the code lies the guiding star.
So ponder this riddle, let your thoughts twine,
When will 6.12 emerge, shining divine?
so – normally we wait for the .1 stable update. Mostly because of packaging technical reasons (the filename/directory names of various things in the “.0” are kind of rather odd and different than anything after that – which leads to manual and thus fragile things)
and 6.12.1 came out late last week! I’ve already updated our package, all it now takes is for an update to pass QA for it to become available.
Just curious: what kind of things are you looking forward to?
That’s quite nice. Thank you for enabling preemption.
129c131
< CONFIG_PREEMPT_VOLUNTARY_BUILD=y
---
> CONFIG_PREEMPT_BUILD=y
131,132c133,137
< CONFIG_PREEMPT_VOLUNTARY=y
< # CONFIG_PREEMPT is not set
---
> # CONFIG_PREEMPT_VOLUNTARY is not set
> CONFIG_PREEMPT=y
> # CONFIG_PREEMPT_RT is not set
> CONFIG_PREEMPT_COUNT=y
> CONFIG_PREEMPTION=y
134a140
> # CONFIG_SCHED_CLASS_EXT is not set
158a165
> CONFIG_PREEMPT_RCU=y
163a171
> CONFIG_TASKS_RCU=y
170a179,181
> CONFIG_RCU_BOOST=y
> CONFIG_RCU_BOOST_DELAY=500
> # CONFIG_RCU_EXP_KTHREAD is not set
172a184
> # CONFIG_RCU_NOCB_CPU_CB_BOOST is not set
There’s a patch for lazy preemption that is beneficial depending on the app.
$ sudo cat /sys/kernel/debug/sched/preempt
none voluntary (full) lazy
$ echo lazy | sudo tee /sys/kernel/debug/sched/preempt
The 6.12 kernel includes sched_ext schedulers. Missing in Clear Linux is sched-ext
tools. My favorite is scx_rusty
. Though scx_flash
and scx_lavd
are amazing, as well.
See how it’s packaged for CachyOS. It’s a meson build.
The 6.12 kernel need various knobs enabled (mentioned at scx url) for this to work.
Well, that’s another nice thing about 6.12 and like to make a kernel with SCX support. But it needs the scx_scheds tools bundle providing the scx_*
binaries.
scx_bpfland scx_flatcg scx_loader scx_qmap scx_rusty
scx_central scx_lavd scx_nest scx_rlfifo scx_simple
scx_flash scx_layered scx_pair scx_rustland scx_userland
I looked at packaging scx and … it’s a tad … interestingly weird
so far it has defeated me but I’ll try again later
Thanks, @arjan, for your reply. I am interested in a low-latency kernel and a super responsive GUI. I play with a DAW (Bitwig Studio), and the 6.12 kernel with sched-ext rusty makes it possible to set a buffer size of 64 samples without any dropouts. This is wild! So, the answer to your question is ‘sched-ext’. This is a screenshot of kernel 6.12 performance on Cachy OS.
When I updated CL today, I was super excited about the CL 6.12 kernel, but the Nvidia driver is now broken, so I have no desktop.
we’ll check why nouveau is broken – it shouldn’t be
still working on the sched-ext tooling – the combination of rust, meson and bpf is generally not a happy one (the build side keeps trying to download stuff from the internet which we cannot allow)
ok scx bundle made – will be in the next release
This is really good news! Thank you @arjan .
I bet @marioroy has a good insight into this, as does the proprietary driver!
The driver part is broken.
- The 560.35.03 driver requires patching to work with the 6.12 kernel. However, the latest production 550.135 works, but another problem described next.
- During the 550.135 driver installation, there becomes two sets of NVIDIA modules in the /lib/modules/kernel path. One set is compressed, the other not and making matters worst do not match. This is not going to work.
What to do? Right now, the NVIDIA 550.135 driver requires no patching. So go with that one by downloading the driver and passing the path to install-driver. This should work for first time NVIDIA installation.
On a Clear installation with prior NVIDIA driver, perform the following steps after the 550.135 driver installation.
sudo rm -f /lib/modules/*/updates/dkms/nvidia*
Boot your machine and press “e” at the boot screen and prepend "3 " with a space to the kernel arguments. Log in and change folder to nvidia-driver-on-clear-linux
. Run the check script. That will build the NVIDIA modules.
./check-kernel-dkms
@arjan Is there something missing in the linux-dev package? Well, it’s not happy for the Linux 6.12 kernel. I tried NVIDIA 565.57.01, 560.35.05, 550.135, and the Vulkan beta driver 550.40.80. All failing with the same error.
make[3]: *** No rule to make target 'scripts/module-common.c', needed by '/var/lib/dkms/nvidia/550.40.80/build/.module-common.o'. Stop.
make[3]: *** Waiting for unfinished jobs....
CC [M] /var/lib/dkms/nvidia/550.40.80/build/nvidia.mod.o
make[2]: *** [/usr/lib/modules/6.12.1-1493.native/build/Makefile:1869: modules] Error 2
make[1]: *** [Makefile:224: __sub-make] Error 2
make[1]: Leaving directory '/usr/lib/modules/6.12.1-1493.native/build'
make: *** [Makefile:85: modules] Error 2
There it is and unsure if this is correct or maybe module-common.c
is missing. No out-of-tree module will build on Clear for Linux 6.12.
$ cd /lib/modules/6.12.1-1493.native/build/scripts
$ grep "module-common.c" Makefile.modfinal
$(extmod_prefix).module-common.o: $(srctree)/scripts/module-common.c FORCE
It turns out to be many missing *.c
files in the scripts folder and sub-folders for the linux-dev
bundle. I compared to another OS distribution.
What to do? Well, Grace says to add the missing *.c file (singular, not all of them). And that works, fortunately. An update for my NVIDIA on Clear repo is undergoing validation.
Edit: This is completed.
My laptop is much more responsive on 6.12.1.
@marioroy I really appreciate your time looking into this and fixing things.
Running 565.57.01 on kernel 6.12.1-1493.native.
Thank you!