Ne jemi disa ditë pas lëshimit të versionit të qëndrueshëm të Linux 6.10, një version që do të përfshijë një sërë ndryshimesh mjaft interesante, si dhe përmirësime të mëdha për sa i përket mbështetjes së pajisjes, funksioneve dhe më shumë.
Në kohën e duhur do të flasim për këtë version, pasi arsyeja për këtë artikull është në lidhje me versionin e ardhshëm të pritshëm të Linux, i cili është "Linux 6.11", një version i të cilit janë lëshuar disa ndryshime që unë i përmend mjaft kohë, do të doja t'i trajtoja në një postim tjetër.
Ok, tani kalojmë te pika e artikullit, e cila është në referencë ndaj një njoftimi të bërë nga Linus Torvalds në lidhje me gatishmërinë e tyre për të përfshirë në kernelin Linux 6.11, disa arna që zbatojnë mekanizmin "sched_ext" (SCX).
Ky mekanizëmose ka për qëllim të përdorë eBPF për të krijuar planifikues CPU brenda kernelit Linux. Këtu është një përmbledhje se si do të funksionojë:
- Programuesit eBPF dhe CPU: Me përdorimin e eBPF, programuesit e CPU-së mund të ngarkohen dhe ekzekutohen në mënyrë dinamike brenda kernelit Linux. Kompilimi Just-In-Time (JIT) përkthen bajtkodin eBPF në udhëzime makinerie për ekzekutim.
- Klasa SCHED_EXT: Kjo është një klasë e re programimi, përparësia e thirrjes së kernelit të së cilës është midis klasave SCHED_IDLE dhe SCHED_NORMAL. Drejtuesit BPF të lidhura me SCHED_EXT mund të trajtojë detyra që kanë një prioritet më të ulët se ekzekutimi në kohë reale, pa ndikuar në detyrat tashmë të bashkangjitura me planifikuesin normal SCHED_NORMAL.
- operacioni: Drejtuesit e BPF analizojnë radhët e detyrave që presin për t'u ekzekutuar në CPU dhe zgjedhin se cilën detyrë do të caktohet kur lirohet një bërthamë CPU. Nëse nuk ka drejtues aktivë BPF në SCHED_EXT, detyrat trajtohen duke përdorur planifikuesin SCHED_NORMAL.
- Përfitimet: Mekanizmi sched_ext lehtëson eksperimentimin me teknika dhe strategji të ndryshme programimi në mënyrë dinamike. Kjo ju lejon të krijoni shpejt prototipe funksionale të programuesve dhe t'i zëvendësoni ato menjëherë në mjediset e prodhimit. Për shembull, mund të akordohet për t'iu përshtatur karakteristikave specifike të një aplikacioni dhe të ndryshojë strategjinë e planifikimit bazuar në statusin e sistemit dhe faktorë të tjerë.
Vlen të përmendet se “sched_ext” fillimisht u propozua për shqyrtim nga zhvilluesit e kernelit në 2022, e ndjekur nga lëshimi i gjashtë rishikimeve të patch-it. Pavarësisht se nuk mbështetet në kernelin kryesor, Disa shpërndarje si Ubuntu, Arch Linux, Fedora dhe NixOS ofrojnë instalimin e "sched_ext" përmes paketave shtesë.. Canonical po shqyrton përfshirjen e komponentëve të «sched_ext» në Ubuntu 24.10, dhe Valve po punon në integrimin e tij për Steam Deck. Në Meta, programuesi i bazuar në «sched_ext» përdoret tashmë në infrastrukturën e prodhimit.
Përveç kësaj, përmendet se, aktualisht, rreth një duzinë programues të bazuar në "sched_ext", secili me logjikën e planifikimit të detyrave të përcaktuar në hapësirën e përdoruesit dhe të ngarkuar në kernel duke përdorur programet BPF.
- scx_layered: Një programues hibrid që ndan detyrat në shtresa, secila me strategjinë e vet të planifikimit. Ju lejon të caktoni detyra të caktuara në shtresa specifike me burime të garantuara të CPU ose të rrisni përparësinë e aplikacioneve individuale. Zhvilluar nga Meta, logjika e saj e hapësirës së përdoruesve është shkruar në Rust.
- scx_rustland: Optimizuar për t'i dhënë përparësi detyrave ndërvepruese mbi ato me intensitet të CPU-së. Për shembull, ai përmirëson FPS në lojën Terraria gjatë përpilimit të njëkohshëm të kernelit në krahasim me planifikuesin standard EEVDF. Zhvilluar nga një punonjës Canonical, me logjikë në Rust.
- scx_lavd: Zbaton algoritmin LAVD (Latency-critical Aware Virtual Deadline), duke reduktuar vonesën në lojërat kompjuterike dhe detyrat ndërvepruese duke marrë parasysh rëndësinë e reduktimit të vonesave dhe progresit të procesit. Zhvilluar nga Igalia dhe Valve, me logjikë në Rust.
- scx_rusty, scx_rlfifo, scx_mitosis: Programuesit që balancojnë grupet e detyrave bazuar në ngarkesën, zbatojnë një planifikues të thjeshtë FIFO dhe lidhin grupet e detyrave me bërthamat e CPU-së. Të gjitha me komponentë Rust.
- scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland: Shembuj të programuesve me komponentë C, duke demonstruar aftësitë e ndryshme të "sched_ext".
Së fundi, ia vlen të shtohet se Google po eksperimenton me përdorimin e kornizës së vet, ghOSt, për të ndikuar në vendimet e planifikuesit të detyrave duke përdorur programet BPF dhe ka filluar të migrojë ghOSt në sched_ext. Për më tepër, Google po zhvillon një port të "sched_ext" për ChromeOS.
Fuente: https://lkml.org