Linux pripravi eBPF za ustvarjanje načrtovalcev opravil

Linux

Estamos nekaj dni po izdaji stabilne različice Linuxa 6.10, različica, ki bo vključevala vrsto precej zanimivih sprememb, pa tudi velike izboljšave v smislu podpore za naprave, funkcij in še več.

Sčasoma bomo govorili o tej izdaji, saj je razlog za ta članek sklicevanje na naslednjo pričakovano različico Linuxa, to je "Linux 6.11", izdaja katere so bile napovedane nekatere spremembe, ki jih omenjam dovolj časa, z veseljem bi jih obravnaval v drugi objavi.

Ok, zdaj pa preidimo na bistvo članka, ki je v sklicevanje na napoved Linusa Torvaldsa o njihovi pripravljenosti vključiti v jedro Linuxa 6.11, nekateri popravki, ki izvajajo mehanizem "sched_ext" (SCX).

Ta mehanizemali je namenjen uporabi eBPF za ustvarjanje načrtovalcev procesorja znotraj jedra Linuxa. Tukaj je povzetek, kako bo delovalo:

  • Programerji eBPF in CPU: Z uporabo eBPF je mogoče načrtovalce procesorja dinamično naložiti in izvajati znotraj jedra Linuxa. Pravočasno prevajanje (JIT) prevede bajtno kodo eBPF v strojna navodila za izvedbo.
  • Razred SCHED_EXT: To je nov programski razred, katerega prioriteta klica jedra je med razredi SCHED_IDLE in SCHED_NORMAL. Gonilniki BPF, povezani z SCHED_EXT lahko obravnava naloge, ki imajo nižjo prioriteto kot izvajanje v realnem času, ne da bi to vplivalo na naloge, ki so že povezane z običajnim razporejevalnikom SCHED_NORMAL.
  • Delovanje: Gonilniki BPF analizirajo čakalne vrste nalog, ki čakajo na izvedbo v CPE, in izberejo, katero nalogo naj dodelijo, ko se sprosti jedro CPE. Če ni aktivnih gonilnikov BPF SCHED_EXT, opravila se obravnavajo z razporejevalnikom SCHED_NORMAL.
  • Prednosti: Mehanizem sched_ext omogoča eksperimentiranje z različnimi tehnikami in strategijami programiranja na dinamičen način. To vam omogoča hitro ustvarjanje funkcionalnih prototipov programerjev in njihovo sprotno zamenjavo v produkcijskih okoljih. Na primer, lahko ga prilagodite posebnim značilnostim aplikacije in spremenite strategijo razporejanja na podlagi stanja sistema in drugih dejavnikov.

Omeniti velja to Razvijalci jedra so leta 2022 prvotno predlagali »sched_ext« v obravnavo, čemur je sledila izdaja šestih popravkov. Čeprav ni podprt v glavnem jedru, Več distribucij, kot so Ubuntu, Arch Linux, Fedora in NixOS, ponujajo namestitev »sched_ext« prek dodatnih paketov. Canonical razmišlja o vključitvi komponent »sched_ext» v Ubuntu 24.10 in Valve dela na njegovi integraciji za Steam Deck. V Meti, programerju, ki temelji na «sched_ext» se že uporablja v proizvodni infrastrukturi.

Poleg tega je omenjeno, da trenutno temelji približno ducat programerjev "sched_ext", vsak z logiko razporejanja opravil, definirano v uporabniškem prostoru in naložen v jedro s programi BPF.

  1. scx_layered: Hibridni razporejevalnik, ki naloge razdeli na plasti, od katerih ima vsaka svojo strategijo razporejanja. Omogoča, da določene naloge dodelite določenim slojem z zagotovljenimi sredstvi CPU ali povečate prioriteto posameznih aplikacij. Razvila ga je Meta, njegova logika uporabniškega prostora pa je napisana v Rustu.
  2. scx_rustland: Optimizirano za dajanje prednosti interaktivnim nalogam pred tistimi, ki zahtevajo CPE. Na primer, izboljša FPS v igri Terraria med sočasnim prevajanjem jedra v primerjavi s standardnim razporejevalnikom EEVDF. Razvil ga je zaposleni v Canonicalu z logiko v Rustu.
  3. scx_lavd: Implementira algoritem LAVD (Latency-criticality Aware Virtual Deadline), ki zmanjšuje zakasnitev v računalniških igrah in interaktivnih opravilih z upoštevanjem pomembnosti zmanjševanja zamud in napredka procesa. Razvila Igalia in Valve, z logiko v Rustu.
  4. scx_rusty, scx_rlfifo, scx_mitoza: Razporejevalniki, ki uravnavajo skupine opravil glede na obremenitev, implementirajo preprost razporejevalnik FIFO in vežejo skupine opravil na jedra CPE. Vse s komponentami Rust.
  5. scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland: Primeri programerjev s komponentami C, ki prikazujejo različne zmožnosti »sched_ext«.

Nazadnje je vredno dodati, da Google eksperimentira z uporabo lastnega ogrodja, ghOSt, za vplivanje na odločitve načrtovalca opravil z uporabo programov BPF, in je začel seliti ghOSt v sched_ext. Poleg tega Google razvija vrata »sched_ext« za ChromeOS.

vir: https://lkml.org


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.