Linus Torvalds shprehu gatishmërinë për të pranuar në bërthamën Linux 6.11, publikimi i së cilës pritet në fund të shtatorit, patch-et me implementimin e mekanizmit "sched_ext" (SCX), që lejon përdorimin e eBPF për të krijuar planifikues CPU, duke mbuluar praktikisht të gjitha aspektet e planifikimit të ekzekutimit të detyrave dhe shpërndarjes së burimeve CPU. Të tillë planifikues mund të ngarkohen dinamikisht dhe të ekzekutohen brenda bërthamës Linux në një makinë virtuale eBPF, në të cilën, falë aplikimit të JIT-kompilimit, bytecode i përkthyer në udhëzime makinerie dhe ekzekutohet me performancën e kodit të kompiluar.
Patch-ët e propozuara zbatojnë një klasë të re planifikimi SCHED_EXT, për të cilën ndalohet përparësia e thirrjes nga bërthama midis klasave SCHED_IDLE dhe SCHED_NORMAL. Kjo nuk lejon që proceset BPF të lidhura me SCHED_EXT të ndikojnë në detyrat që tashmë janë lidhur me planifikuesin e detyrave standard (SCHED_NORMAL), por ofron mundësinë për të lidhur detyra të veçanta me SCHED_EXT ose për të zhvendosur përpunimin e të gjitha proceseve që kanë përparësi më të ulët se ekzekutimi në kohë reale. Nëse nuk janë të lidhura proceset BPF me SCHED_EXT, të gjitha proceset e zhvendosura në klasën SCHED_EXT do të përpunohen me planifikuesin SCHED_NORMAL. Puna e procesëve BPF përfshin analizimin e rreshtave të detyrave që presin për tu ekzekutuar në CPU (një rresht global dhe nga një rresht për secilën bërthamë CPU), dhe zgjedhjen e detyrës që duhet t'i jepet burimeve të CPU kur çlirohet një bërthamë CPU.
Mekanizmi sched_ext e thjeshton krijimin e planifikuesve specifikë për detyra të caktuara, duke ofruar mundësinë për të eksperimentuar me teknika dhe strategji të ndryshme të planifikimit, si dhe për të krijuar shpejt prototipa funksionalë dhe për të zëvendësuar planifikuesit në kohë reale në infrastrukturat e punës. Për shembull, me ndihmën e sched_ext mund të krijoni një planifikues që merr parasysh specifikat e një aplikacioni të caktuar dhe ndërron dinamikisht strategjinë e planifikimit të ekzekutimit të tij në varësi të gjendjes së sistemit dhe faktorëve të tjerë shtesë.
Aktualisht, po zhvillohen rreth një duzinë planifikuesish në bazë të sched_ext, logjika e planifikimit të detyrave të të cilëve përcaktohet në hapësirën e përdoruesit dhe ngarkohet në bërthamë në formën e programeve BPF:
- scx_layered â njĂ« planifikues hibrid i detyrave, qĂ« ndan detyrat nĂ« shtresa, pĂ«r secilĂ«n nga tĂ« cilat aplikohet njĂ« strategji planeve tĂ« veçanta. PĂ«r shembull, scx_layered lejon ndarjen e disa detyrave nĂ« njĂ« shtresĂ« tĂ« veçantĂ«, pĂ«r tĂ« cilat do tĂ« ofrohen burime tĂ« garantuara CPU, ose tĂ« rritet pĂ«rparĂ«sia e aplikacioneve tĂ« veçanta. Planifikuesi po zhvillohet nga kompania Meta. Logjika e gjenerimit BPF qĂ« punon nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit Ă«shtĂ« shkruar nĂ« gjuhĂ«n Rust.
- scx_rustland â njĂ« planifikues i optimizuar pĂ«r tĂ« rritur pĂ«rparĂ«sinĂ« e detyrave interaktive nĂ« sfondin e detyrave qĂ« ngarkojnĂ« intensively CPU-nĂ«. PĂ«r shembull, nĂ« testin e nisjes sĂ« aplikacionit tĂ« lojĂ«s Terraria, nĂ« tĂ« njĂ«jtĂ«n kohĂ« me ndĂ«rtimin e bĂ«rthamĂ«s, planifikuesi scx_rustland arriti tĂ« siguronte njĂ« FPS mĂ« tĂ« lartĂ« nĂ« lojĂ« krahasuar me planifikuesin standard EEVDF. Projekti po zhvillohet nga njĂ« punonjĂ«s i kompanisĂ« Canonical. Logjika e gjenerimit BPF qĂ« punon nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit Ă«shtĂ« shkruar nĂ« gjuhĂ«n Rust.
- scx_lavd â realizimi i algoritmit tĂ« planifikimit tĂ« detyrave LAVD (Latency-criticality Aware Virtual Deadline), i cili merr parasysh rĂ«ndĂ«sinĂ« e uljes sĂ« vonesave pĂ«r detyra tĂ« caktuara dhe pĂ«rdor informacion mbi ecurinĂ« e proceseve nĂ« marrjen e vendimeve pĂ«r shpĂ«rndarjen e burimeve CPU. Planifikuesi po zhvillohet nga kompanitĂ« Igalia dhe Valve pĂ«r tĂ« ulur vonesat nĂ« lojĂ«rat kompjuterike dhe detyrat interaktive. Logjika e gjenerimit BPF qĂ« funksionon nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit Ă«shtĂ« shkruar nĂ« gjuhĂ«n Rust.
- scx_rusty, scx_rlfifo, scx_mitosis â shembuj tĂ« planifikuesve me komponente nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit nĂ« gjuhĂ«n Rust, tĂ« cilĂ«t realizojnĂ« bilancimin midis grupeve tĂ« detyrave nĂ« varĂ«si tĂ« ngarkesĂ«s, njĂ« planifikues tĂ« thjeshtĂ« FIFO dhe njĂ« planifikues pĂ«r lidhjen e grupeve tĂ« detyrave me bĂ«rthamat CPU.
- scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland â shembuj tĂ« planifikuesve me komponente nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit nĂ« gjuhĂ«n C, qĂ« ilustrojnĂ« mundĂ«si tĂ« ndryshme tĂ« sched-ext.
Fillimi, mekanizmi sched_ext u propozua për shqyrtim nga zhvilluesit e kernit në vitin 2022, pas së cilës u publikuan gjashtë redaktime të patch-it. Pavarësisht mungesës së mbështetjes në bërthamën kryesore, për shpërndarjet Ubuntu, Arch Linux, Fedora dhe NixOS ofrohet mundësia e instalimit të sched_ext përmes paketave shtesë. Kompania Canonical po shqyrton mundësinë e përfshirjes së komponentëve sched-ext në Ubuntu 24.10, ndërsa kompania Valve po punon për integrimin e sched_ext në Steam Deck. Në kompaninë Meta, planifikuesi i bazuar në sched_ext është tashmë në përdorim në infrastrukturën e saj operative.
Kompania Google po eksperimenton me përdorimin e kornizës së saj ghOSt, e cila lejon ndikimin në vendimet e planifikuesit të detyrave përmes programeve BPF. Aktualisht ka filluar puna për portimin e ghOSt në sched_ext. Google gjithashtu po zhvillon portin e sched_ext për ChromeOS me qëllimin për ta përdorur për aktivizimin e planifikuesit hibrid scx_layered për të reduktuar vonesat pa përdorur zgjatje për funksionimin në kohë reale. Kompania Oculus po zhvillon portin e sched_ext për Android.
Burimi: opennet.ru
