Skip to content

Commit fd0ea47

Browse files
committed
Turn on sched_ext for the next kernel, and say what it costs
CachyOS's kernel is not measurably faster than this one — same BORE, same 1000 Hz, same PREEMPT, same -O3 — but it does have one thing we do not, and checking rather than assuming settled it: CONFIG_SCHED_CLASS_EXT does not appear in our config at all. With it the kernel can host a scheduler written in BPF and swap it while running. The fragment turns it on, and the README now carries the two caveats that make the difference between a feature and a footgun. It gives a user nothing today. The scheduler is a separate userspace program and Debian sid ships neither scx-scheds nor scx — checked with apt-cache, not remembered. Until we package those, the kernel keeps running BORE, which is the default and is fine. Enabling it now means the kernel is ready when they land rather than needing a rebuild first. And it is not free. sched_ext needs BTF, BTF needs debug info, and this config had CONFIG_DEBUG_INFO_NONE=y — none at all. The fragment switches that to DWARF5, which lengthens the build and adds a few MB to the image. pahole is now installed on the build host, because the alternative is discovering it is missing an hour into a compile. Also carried over: the site's driver row said Mesa 26.0.8 while we ship 26.1.6. The measured version stays, because that table is the test bench and those numbers really were taken on 26.0.8 — what was added is what ships today, the same treatment the kernel row got. Mesa went into the existing kernel release note rather than a second one, and it credits Debian, who package it.
1 parent d7703d9 commit fd0ea47

12 files changed

Lines changed: 79 additions & 19 deletions

File tree

kernel-build/README.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,37 @@ Build host: AMD BC-250 (Debian). Tool: https://github.com/Frogging-Family/linux-
2020
⚠️ Once this ships, check whether the Monitor's SMU sampler is still needed:
2121
it works around this very bug, and two fixes for one bug is one too many.)
2222
(drops the cosmetic per-CPU `pr_emerg("RDSEED is not reliable...")` boot spam in arch/x86/kernel/cpu/amd.c; RDSEED is still correctly disabled via clear_cpu_cap/msr_clear_bit, just silently)
23+
4b. Copy `config-fragments/*.myfrag` into the linux-tkg root (same folder as
24+
the PKGBUILD). `customization.cfg` already has `_config_fragments="true"` and
25+
`_config_fragments_no_confirm="true"`, so they are applied without asking.
26+
- `skillfish-sched-ext.myfrag` — turns on `CONFIG_SCHED_CLASS_EXT`, the
27+
extensible scheduler class, plus the BTF it needs.
28+
Install `dwarves` on the build host first (`pahole`), or the build fails
29+
late with a missing tool.
2330
5. ./install.sh install -> .deb in DEBS/ (then publish via scripts/publish-kernel.sh)
2431

25-
Key config: BORE, GCC -O3, -march=znver2, 1000Hz, NTsync+fsync, no LTO, localversion=skillfishos.
32+
Key config: BORE, GCC -O3, -march=znver2, 1000Hz, NTsync+fsync, no LTO,
33+
localversion=skillfishos, and from 7.2.1 onwards `sched_ext` enabled.
34+
35+
### sched_ext: what it does and does not give you
36+
37+
`CONFIG_SCHED_CLASS_EXT` lets the kernel host a scheduler written in BPF and
38+
swap it at runtime. It is the one real kernel-level difference between this
39+
kernel and CachyOS's — measured on 2026-08-23, our config did not have the
40+
symbol at all.
41+
42+
⚠️ On its own it changes nothing for a user. The scheduler itself is a separate
43+
userspace program, and Debian sid ships neither `scx-scheds` nor `scx`. Until we
44+
package them the kernel keeps running BORE, which is the default and is fine.
45+
Enabling it now means the kernel is ready the day those land, instead of asking
46+
people to wait for a rebuild.
47+
48+
⚠️ It is not free. sched_ext needs BTF, BTF needs debug info, and this config
49+
had `CONFIG_DEBUG_INFO_NONE=y` — none at all. Turning it on lengthens the build
50+
and adds a few MB to the image. The build host needs `pahole` from `dwarves`.
51+
52+
⚠️ Leave `_ftracedisable="false"`. With FTRACE off the LAVD scheduler does not
53+
work — customization.cfg says so on the line above the option.
2654

2755
## Two traps that cost a build each
2856

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# sched_ext per il kernel SkillFishOS
2+
#
3+
# Accende la classe di scheduling estendibile: schedulatori di processo scritti
4+
# in BPF, che si caricano e si sostituiscono a sistema acceso senza riavviare.
5+
# E' l'unica differenza di kernel vera fra noi e CachyOS (verificato il
6+
# 23/08/2026: nella nostra configurazione CONFIG_SCHED_CLASS_EXT non compariva
7+
# proprio).
8+
#
9+
# ⚠️ DA SOLO NON BASTA, E VA SAPUTO PRIMA
10+
# Il kernel diventa capace di OSPITARE uno schedulatore BPF, ma lo schedulatore
11+
# e' un programma a parte. In Debian sid non c'e': ne' `scx-scheds` ne' `scx`
12+
# esistono nell'archivio (controllato con apt-cache). Finche' non li
13+
# impacchettiamo noi, questa opzione non cambia niente per l'utente: il kernel
14+
# resta su BORE, che e' il nostro predefinito e va benissimo.
15+
#
16+
# ⚠️ IL PREZZO
17+
# sched_ext ha bisogno di BTF, e BTF ha bisogno delle informazioni di debug.
18+
# Oggi la nostra configurazione ha CONFIG_DEBUG_INFO_NONE=y, cioe' nessuna. Va
19+
# tolto, e questo allunga la compilazione e ingrossa l'immagine di qualche MB.
20+
# Sulla macchina che compila serve `pahole` (pacchetto `dwarves`).
21+
#
22+
# ⚠️ NON disattivare FTRACE: `_ftracedisable` deve restare "false", altrimenti
23+
# lo schedulatore LAVD non funziona. Lo dice anche customization.cfg.
24+
25+
CONFIG_SCHED_CLASS_EXT=y
26+
27+
# le informazioni di debug, che servono a BTF
28+
# CONFIG_DEBUG_INFO_NONE is not set
29+
CONFIG_DEBUG_INFO=y
30+
CONFIG_DEBUG_INFO_DWARF5=y
31+
CONFIG_DEBUG_INFO_BTF=y
32+
CONFIG_DEBUG_INFO_BTF_MODULES=y

website/src/content/docs/de/prestazioni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Gelten für **alle** folgenden Messungen, sofern nichts anderes steht.
1919
| Speicher | **16 GB GDDR6**, gemeinsam genutzt (UMA) |
2020
| Recheneinheiten | **40 / 40 aktiv** (im Betrieb umgeschaltet, siehe [GPU](/de/docs/gpu-overclock)) |
2121
| Kernel | **7.0.10-skillfishos** (linux-tkg) — die Fassung, mit der diese Zahlen entstanden; heute liefern wir **7.2.0** aus; 7.1.7 wurde mit weniger als 2 % Abweichung nachgemessen |
22-
| Treiber | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO |
22+
| Treiber | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO; heute liefern wir **26.1.6** aus |
2323
| GPU-Governor | cyan-skillfish — Leerlauf **350 MHz / 700 mV**, Last **2230 MHz / ~1000 mV** |
2424
| Übertaktungsprofil | **Turbo/Crazy** (GPU-Grenze 2230 MHz, CPU 3,9–4,0 GHz) |
2525
| Wärmegrenze | **85 °C** (SMU und thermal-guard), Lüfter auf **automatisch** |

website/src/content/docs/en/prestazioni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Apply to **all** benchmarks below unless stated otherwise.
1919
| Memory | **16 GB GDDR6** unified (UMA) |
2020
| Compute Units | **40 / 40 active** (routed live, see [GPU](/en/docs/gpu-overclock)) |
2121
| Kernel | **7.0.10-skillfishos** (linux-tkg) — the version these numbers were taken with; we ship **7.2.0** today; 7.1.7 re-measured within 2% |
22-
| Driver | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO |
22+
| Driver | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO; we ship **26.1.6** today |
2323
| GPU governor | cyan-skillfish — idle **350 MHz / 700 mV**, load **2230 MHz / ~1000 mV** |
2424
| OC profile | **Turbo/Crazy** (GPU cap 2230 MHz, CPU 3.9–4.0 GHz) |
2525
| Thermal cap | **85 °C** (SMU + thermal-guard), fan on **auto** |

website/src/content/docs/es/prestazioni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Valen para **todas** las pruebas de abajo salvo que se diga otra cosa.
1919
| Memoria | **16 GB GDDR6** unificada (UMA) |
2020
| Unidades de cómputo | **40 / 40 activas** (conmutadas en caliente, ver [GPU](/es/docs/gpu-overclock)) |
2121
| Núcleo | **7.0.10-skillfishos** (linux-tkg) — la versión con la que se tomaron estas cifras; hoy entregamos el **7.2.0**; el 7.1.7 se volvió a medir con menos de un 2 % de diferencia |
22-
| Controlador | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO |
22+
| Controlador | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO; hoy entregamos la **26.1.6** |
2323
| Gobernador de GPU | cyan-skillfish — reposo **350 MHz / 700 mV**, carga **2230 MHz / ~1000 mV** |
2424
| Perfil de OC | **Turbo/Crazy** (tope de GPU 2230 MHz, CPU 3,9–4,0 GHz) |
2525
| Tope térmico | **85 °C** (SMU y thermal-guard), ventilador en **automático** |

website/src/content/docs/fr/prestazioni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Elles valent pour **toutes** les mesures ci-dessous, sauf mention contraire.
1919
| Mémoire | **16 Go de GDDR6** unifiés (UMA) |
2020
| Unités de calcul | **40 / 40 actives** (basculées à chaud, voir [GPU](/fr/docs/gpu-overclock)) |
2121
| Noyau | **7.0.10-skillfishos** (linux-tkg) — la version avec laquelle ces chiffres ont été pris ; nous livrons aujourd'hui le **7.2.0** ; le 7.1.7 avait été remesuré à moins de 2 % près |
22-
| Pilote | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO |
22+
| Pilote | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO ; nous livrons aujourd'hui la **26.1.6** |
2323
| Gouverneur du GPU | cyan-skillfish — au repos **350 MHz / 700 mV**, en charge **2230 MHz / ~1000 mV** |
2424
| Profil d'overclock | **Turbo/Crazy** (plafond GPU 2230 MHz, CPU 3,9–4,0 GHz) |
2525
| Plafond thermique | **85 °C** (SMU et thermal-guard), ventilateur en **automatique** |

website/src/content/docs/it/prestazioni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Valide per **tutti** i benchmark sotto, salvo dove indicato diversamente.
1919
| Memoria | **16 GB GDDR6** unificata (UMA) |
2020
| Compute Unit | **40 / 40 attive** (instradate a caldo, vedi [GPU](/docs/gpu-overclock)) |
2121
| Kernel | **7.0.10-skillfishos** (linux-tkg) — la versione con cui furono presi questi numeri; oggi spediamo la **7.2.0**; la 7.1.7 era stata rimisurata entro il 2% |
22-
| Driver | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO |
22+
| Driver | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO; oggi spediamo la **26.1.6** |
2323
| Governor GPU | cyan-skillfish — idle **350 MHz / 700 mV**, carico **2230 MHz / ~1000 mV** |
2424
| Profilo OC | **Turbo/Crazy** (GPU cap 2230 MHz, CPU 3.9–4.0 GHz) |
2525
| Cap termico | **85 °C** (SMU + thermal-guard), ventola in **automatico** |

website/src/content/docs/pl/prestazioni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Dotyczą **wszystkich** poniższych testów, o ile nie napisano inaczej.
1919
| Pamięć | **16 GB GDDR6** wspólne (UMA) |
2020
| Jednostki obliczeniowe | **40 / 40 aktywnych** (podniesione na żywo, zobacz [GPU](/pl/docs/gpu-overclock)) |
2121
| Jądro | **7.0.10-skillfishos** (linux-tkg) — wersja, przy której zebrano te liczby; dziś wydajemy **7.2.0**; 7.1.7 przemierzono z różnicą poniżej 2% |
22-
| Sterownik | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO |
22+
| Sterownik | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO; dziś wydajemy **26.1.6** |
2323
| Zarządca grafiki | cyan-skillfish — bezczynność **350 MHz / 700 mV**, obciążenie **2230 MHz / ~1000 mV** |
2424
| Profil OC | **Turbo/Crazy** (limit grafiki 2230 MHz, procesor 3,9–4,0 GHz) |
2525
| Limit termiczny | **85 °C** (SMU + thermal-guard), wentylator na **auto** |

website/src/content/docs/pt/prestazioni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Valem para **todos** os testes abaixo, salvo indicação contrária.
1919
| Memória | **16 GB GDDR6** unificada (UMA) |
2020
| Unidades de computação | **40 / 40 ativas** (comutadas em tempo real, veja [GPU](/pt/docs/gpu-overclock)) |
2121
| Kernel | **7.0.10-skillfishos** (linux-tkg) — a versão com que estes números foram tirados; hoje entregamos o **7.2.0**; o 7.1.7 foi remedido com menos de 2 % de diferença |
22-
| Driver | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO |
22+
| Driver | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO; hoje entregamos a **26.1.6** |
2323
| Governador da GPU | cyan-skillfish — repouso **350 MHz / 700 mV**, carga **2230 MHz / ~1000 mV** |
2424
| Perfil de OC | **Turbo/Crazy** (teto de GPU 2230 MHz, CPU 3,9–4,0 GHz) |
2525
| Teto térmico | **85 °C** (SMU e thermal-guard), ventoinha no **automático** |

website/src/content/docs/ru/prestazioni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ order: 3
1919
| Память | **16 ГБ GDDR6**, единая (UMA) |
2020
| Вычислительные блоки | **40 / 40 активны** (переключены на ходу, см. [Видеоядро](/ru/docs/gpu-overclock)) |
2121
| Ядро | **7.0.10-skillfishos** (linux-tkg) — версия, на которой сняты числа; сегодня мы поставляем **7.2.0**; 7.1.7 перемеряли с расхождением в пределах 2 % |
22-
| Драйвер | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO |
22+
| Драйвер | **Mesa 26.0.8** — RADV (Vulkan) / radeonsi (OpenGL), ACO; сегодня мы поставляем **26.1.6** |
2323
| Регулятор видеоядра | cyan-skillfish — покой **350 МГц / 700 мВ**, нагрузка **2230 МГц / ~1000 мВ** |
2424
| Профиль разгона | **Turbo/Crazy** (потолок видеоядра 2230 МГц, процессор 3,9–4,0 ГГц) |
2525
| Тепловой потолок | **85 °C** (SMU и thermal-guard), вентилятор в **автоматическом** режиме |

0 commit comments

Comments
 (0)