Linux valmistab eBPF-i ette ülesannete planeerijate loomiseks

Linux

Me oleme paar päeva pärast Linuxi stabiilse versiooni 6.10 väljaandmist, versioon, mis sisaldab mitmeid üsna huvitavaid muudatusi, aga ka suuri täiustusi seadme toe, funktsioonide ja muu osas.

Aja jooksul räägime sellest väljalasest, kuna selle artikli põhjus on viide Linuxi järgmisele eeldatavale versioonile, milleks on "Linux 6.11", mille väljalaskest on teatatud mõned muudatused, mida ma mainin piisavalt aega, tahaksin neid mõnes teises postituses käsitleda.

Ok, liigume nüüd artikli punkti juurde, mis on sees viide Linus Torvaldsi teadaandele nende valmisoleku kohta lisada Linuxi 6.11 kernelisse mõned plaastrid, mis mehhanismi rakendavad "sched_ext" (SCX).

See mehhanismvõi on ette nähtud eBPF-i kasutamiseks Linuxi tuumas CPU planeerijate loomiseks. Siin on kokkuvõte selle toimimisest:

  • eBPF ja CPU programmeerijad: eBPF-i abil saab protsessori planeerijaid dünaamiliselt laadida ja käivitada Linuxi tuumas. Just-In-Time (JIT) kompileerimine teisendab eBPF baitkoodi täitmiseks masinajuhisteks.
  • SCHED_EXT klass: See on uus programmeerimisklass, mille kerneli kõne prioriteet on klasside hulgas SCHED_IDLE ja SCHED_NORMAL. BPF draiverid on lingitud SCHED_EXT saab hakkama ülesannetega, millel on madalam prioriteet kui reaalajas täitmine, ilma et see mõjutaks tavapärasele planeerijale juba lisatud ülesandeid SCHED_NORMAL.
  • Operatsioon: BPF-draiverid analüüsivad protsessoris täitmist ootavate ülesannete järjekordi ja valivad, milline ülesanne määrata, kui protsessori tuum on vabastatud. Kui aktiivseid BPF-draivereid pole sisse lülitatud SCHED_EXT, ülesandeid käsitletakse ajakava abil SCHED_NORMAL.
  • Eelised: Mehhanism sched_ext hõlbustab dünaamilisel viisil katsetamist erinevate programmeerimistehnikate ja strateegiatega. See võimaldab kiiresti luua programmeerijate funktsionaalseid prototüüpe ja neid tootmiskeskkondades lennult välja vahetada. Näiteks saab seda häälestada nii, et see sobiks rakenduse spetsiifiliste omadustega ja muuta ajastamisstrateegiat süsteemi oleku ja muude tegurite põhjal.

Tasub seda mainida „sched_ext” pakuti kerneli arendajatele algselt kaalumiseks 2022. aastal, millele järgnes kuue plaastri versiooni väljaandmine. Vaatamata sellele, et põhituum seda ei toeta, Mitmed distributsioonid, nagu Ubuntu, Arch Linux, Fedora ja NixOS, pakuvad "sched_ext" installimist lisapakettide kaudu. Canonical kaalub komponentide lisamist "sched_ext» Ubuntu versioonis 24.10 ja Valve töötab Steam Decki integreerimise kallal. Metas on programmeerija «sched_ext» on juba tootmise infrastruktuuris kasutusel.

Lisaks mainitakse, et praegu põhineb kümmekond programmeerijat "sched_ext", millest igaühel on kasutajaruumis määratletud ülesannete ajastamise loogika ja laaditud BPF-programmide abil kernelisse.

  1. scx_layered: hübriidplaneerija, mis jagab ülesanded kihtideks, millest igaühel on oma ajastamisstrateegia. Võimaldab määrata kindlatele kihtidele teatud ülesandeid garanteeritud protsessoriressurssidega või suurendada üksikute rakenduste prioriteetsust. Meta poolt välja töötatud kasutajaruumi loogika on kirjutatud Rustis.
  2. scx_rustland: optimeeritud eelistama interaktiivseid ülesandeid protsessorimahukatele. Näiteks parandab see FPS-i Terraria mängus samaaegse kerneli kompileerimise ajal võrreldes tavalise EEVDF-i planeerijaga. Canonicali töötaja poolt välja töötatud, loogikaga Rust.
  3. scx_lavd: Rakendab LAVD (Latency-criticality Aware Virtual Deadline) algoritmi, vähendades arvutimängude ja interaktiivsete ülesannete latentsust, võttes arvesse viivituste ja protsesside edenemise vähendamise asjakohasust. Igalia ja Valve poolt välja töötatud, loogikaga Rust.
  4. scx_rusty, scx_rlfifo, scx_mitosis: planeerijad, mis tasakaalustavad tegumirühmi koormuse alusel, rakendavad lihtsat FIFO planeerijat ja seovad tegumirühmad protsessori tuumadega. Kõik roostekomponentidega.
  5. scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland: C-komponentidega programmeerijate näited, mis demonstreerivad "sched_ext" erinevaid võimalusi.

Lõpetuseks tasub lisada, et Google katsetab omaenda raamistiku ghOSt-i kasutamist, et mõjutada tegumiplaneerija otsuseid BPF-programmide abil, ning on alustanud ghOSti migreerimist sched_ext-i. Lisaks arendab Google ChromeOS-i jaoks porti "sched_ext".

allikas: https://lkml.org


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.