Linux bereidt eBPF voor om taakplanners te maken

Linux

Wij zijn een paar dagen na de release van de stabiele versie van Linux 6.10, een versie die een reeks behoorlijk interessante veranderingen zal bevatten, evenals grote verbeteringen op het gebied van apparaatondersteuning, functies en meer.

Te zijner tijd zullen we het over deze release hebben, aangezien de reden voor dit artikel verwijst naar de volgende verwachte versie van Linux, namelijk "Linux 6.11", een release waarvan enkele wijzigingen zijn uitgebracht die ik wel vermeld genoeg tijd, ik zou ze graag in een andere post willen behandelen.

Oké, nu gaan we verder met het punt van het artikel, dat is binnen verwijzing naar een aankondiging gedaan door Linus Torvalds over hun bereidheid om er enkele in de Linux 6.11-kernel op te nemen patches die het mechanisme implementeren "sched_ext" (SCX).

Dit mechanismeof is bedoeld om eBPF te gebruiken om CPU-planners te maken binnen de Linux-kernel. Hier is een samenvatting van hoe het zal werken:

  • eBPF- en CPU-programmeurs: Met het gebruik van eBPF kunnen CPU-planners dynamisch worden geladen en uitgevoerd binnen de Linux-kernel. Just-In-Time (JIT)-compilatie vertaalt eBPF-bytecode in machine-instructies voor uitvoering.
  • SCHED_EXT klasse: Dit is een nieuwe programmeerklasse, waarvan de kernelaanroepprioriteit een van de klassen is SCHED_IDLE en SCHED_NORMAL. BPF-stuurprogramma's gekoppeld aan SCHED_EXT kan taken afhandelen die een lagere prioriteit hebben dan realtime uitvoering, zonder dat dit gevolgen heeft voor taken die al aan de normale planner zijn gekoppeld SCHED_NORMAL.
  • operatie: BPF-stuurprogramma's analyseren wachtrijen met taken die wachten om op de CPU te worden uitgevoerd en selecteren welke taak moet worden toegewezen wanneer een CPU-kern wordt vrijgegeven. Als er geen actieve BPF-stuurprogramma's zijn SCHED_EXT, taken worden afgehandeld met behulp van de planner SCHED_NORMAL.
  • Voordelen: Het mechanisme schema_ext vergemakkelijkt het experimenteren met verschillende programmeertechnieken en strategieën op een dynamische manier. Hierdoor kunt u snel functionele prototypes van programmeurs maken en deze in productieomgevingen direct vervangen. Het kan bijvoorbeeld worden afgestemd op de specifieke kenmerken van een applicatie en de planningsstrategie wijzigen op basis van de systeemstatus en andere factoren.

Dat is het vermelden waard “sched_ext” werd aanvankelijk ter overweging voorgesteld door kernelontwikkelaars in 2022, gevolgd door de release van zes patchrevisies. Ondanks dat het niet wordt ondersteund in de hoofdkernel, Verschillende distributies zoals Ubuntu, Arch Linux, Fedora en NixOS bieden de installatie van "sched_ext" aan via aanvullende pakketten. Canonical overweegt componenten op te nemen van «schema_ext» in Ubuntu 24.10, en Valve werkt aan de integratie ervan voor het Steam Deck. In Meta, de programmeur gebaseerd op «schema_ext» wordt al gebruikt in de productie-infrastructuur.

Daarnaast wordt vermeld dat er momenteel ongeveer een dozijn programmeurs op gebaseerd zijn "geplande_ext", elk met taakplanningslogica gedefinieerd in de gebruikersruimte en in de kernel geladen met behulp van BPF-programma's.

  1. scx_gelaagd: Een hybride planner die taken in lagen verdeelt, elk met zijn eigen planningsstrategie. Hiermee kunt u bepaalde taken toewijzen aan specifieke lagen met gegarandeerde CPU-bronnen of de prioriteit van individuele applicaties verhogen. De gebruikersruimtelogica is ontwikkeld door Meta en is geschreven in Rust.
  2. scx_rustland: Geoptimaliseerd om voorrang te geven aan interactieve taken boven CPU-intensieve taken. Het verbetert bijvoorbeeld de FPS in het Terraria-spel tijdens gelijktijdige kernelcompilatie in vergelijking met de standaard EEVDF-planner. Ontwikkeld door een medewerker van Canonical, met logica in Rust.
  3. scx_lavd: Implementeert het LAVD-algoritme (Latency-criticality Aware Virtual Deadline), waardoor de latentie in computerspellen en interactieve taken wordt verminderd door rekening te houden met de relevantie van het verminderen van vertragingen en procesvoortgang. Ontwikkeld door Igalia en Valve, met logica in Rust.
  4. scx_rusty, scx_rlfifo, scx_mitosis: Planners die taakgroepen verdelen op basis van belasting, een eenvoudige FIFO-planner implementeren en taakgroepen aan CPU-kernen binden. Allemaal met roestcomponenten.
  5. scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland: Voorbeelden van programmeurs met C-componenten, die de verschillende mogelijkheden van “sched_ext” demonstreren.

Ten slotte is het de moeite waard eraan toe te voegen dat Google experimenteert met het gebruik van zijn eigen raamwerk, ghOSt, om beslissingen van taakplanners te beïnvloeden met behulp van BPF-programma's, en is begonnen met het migreren van ghOSt naar "sched_ext". Daarnaast ontwikkelt Google een port van “sched_ext” voor ChromeOS.

bron: https://lkml.org


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.