Linux përgatit eBPF për të krijuar planifikues detyrash

Linux

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.