# sched_ext v jádře Linuxu 6.12: dynamické plánovače na BPF
V vydání jádra Linuxu 6.12 se objevil třída plánovačů sched_ext, která umožňuje dynamicky nahrazovat logiku distribuce úloh prostřednictvím BPF programů. To eliminuje potřebu patchů a překompilace jádra pro experimenty s algoritmy. Politiky se načítají z uživatelského prostoru, jádro zajišťuje bezpečnost mechanismem návratu k SCHED_NORMAL při selháních.
Třída sched_ext rozděluje odpovědnosti: jádro spravuje fronty dispečerizace (DSQ), migraci úloh a stav, BPF politika rozhoduje o klasifikaci, pořadí a kvantu času. Při probuzení úlohy se volá hook enqueue(), při uvolnění jádra — dispatch().
Životní cyklus úlohy v sched_ext
Úloha se probouzí prostřednictvím try_to_wake_up(), politika analyzuje její charakteristiky: vzorce probuzení, využití CPU/IO, cgroup, přítomnost RT politik (SCHED_FIFO, SCHED_RR). Politika umístí úlohu do globální nebo lokální fronty, využívá virtuální čas pro priority.
V dispatch() se úloha extrahuje, předá se jádru prostřednictvím scx_bpf_dispatch() s kvantem v nanosekundách. Migrace se iniciuje scx_bpf_kick_cpu() pro vyrovnání zátěže nebo lokalitu cache.
Fronty DSQ fungují v režimu FIFO nebo prioritním v závislosti na metodě vložení:
- scx_bpf_dispatch() — FIFO sémantika.
- scx_bpf_dispatch_vtime() — řazení podle vtime.
Interní skóre (score) politiky neovlivňuje jádrové priority (nice, prio).
Příklad: scx_horoscope jako demonstrace možností
Projekt scx_horoscope využívá astrologická data pro úpravu kvantů, ilustruje vzorec sched_ext. Každých 60 sekund se počítají polohy planet, retrogradita a fáze Měsíce, generují se koeficienty.
Klasifikace úloh podle:
- RT politik.
- Vzorců probuzení.
- Využití CPU/IO.
- cgroup.
Základní kvant se upravuje multiplikátory: znamení zvěrokruhu zvyšují/snižují pro typy úloh, retrogradita — penalizace 50 %, úplněk — bonus pro interaktivní. Kvant je omezen min_slice_ns a max_slice_ns.
Jedná se o vzdělávací příklad: reálné výpočty, stabilní provoz, ale bez vědeckého základu pro produkci.
Praktické plánovače na sched_ext
Ekosystém scx zahrnuje produkčně orientované politiky:
- scx_lavd (Latency-Aware Virtual Deadline): virtuální deadliny podle vzorců probuzení, snížení 99. percentilu zpoždění o 15–30 % oproti CFS na desktopech.
- scx_rusty: NUMA optimalizace, minimalizace migrací, zohlednění tepelných limitů pro servery.
- scx_flash: ML predikce z user-space přes sdílenou paměť.
Cykly vývoje se zkrátily na hodiny: sestavení, načtení, metriky, iterace bez restartu.
Nástroje pro benchmarkování
Hodnocení prostřednictvím:
/sys/kernel/sched_ext/— metriky dispatch, migrací.- bpftrace — trasování událostí.
- perf sched — zpoždění kontextových přepnutí.
- cyclictest — ocasové zpoždění.
Zaměření na percentily, ne průměry: ocasy jsou kritické pro responzivitu.
Scénáře použití:
- Herní servery: zaručený kvant pro logiku, izolace od pozadí.
- Vestavěné systémy: seskupení úloh pro snížení frekvence přepnutí.
- Cloud: záruky propustnosti nad cgroup.
- Audio/video: rezervace jader, minimalizace jitteru.
Omezení a vývoj
Overhead z dispatch volání roste při vysoké frekvenci přepnutí. Logické chyby degradují výkon bez paniky. API se vyvíjí, status experimentální.
Co je důležité:
- sched_ext v 6.12 s CONFIG_SCHED_CLASS_EXT.
- BPF politiky pro rychlé prototypování.
- Návrat k SCHED_NORMAL při selháních.
- Zaměření na percentily v benchmarkách.
- Použití v latency-kritických a NUMA scénářích.
— Editorial Team
Zatím žádné komentáře.