Linux priprema eBPF za kreiranje planera zadataka

Linux

Mi smo nekoliko dana nakon izlaska stabilne verzije Linuxa 6.10, verzija koja će uključivati ​​niz prilično zanimljivih promjena, kao i velika poboljšanja u smislu podrške uređaja, funkcija i još mnogo toga.

U dogledno vrijeme ćemo pričati o ovom izdanju, jer je razlog za ovaj članak u vezi sa sljedećom očekivanom verzijom Linuxa, a to je "Linux 6.11", čije su izdanje najavljene koje sam naveo dovoljno vremena, volio bih da im se obratim u nekom drugom postu.

Ok, sada prelazimo na poentu članka, koja je u pozivanje na najavu Linusa Torvaldsa o njihovoj spremnosti da uključe u Linux 6.11 kernel, neke zakrpe koje implementiraju mehanizam “sched_ext” (SCX).

Ovaj mehanizamili je namijenjen za korištenje eBPF-a za kreiranje CPU planera unutar Linux kernela. Evo sažetka kako će to funkcionirati:

  • eBPF i CPU programeri: Uz korištenje eBPF-a, CPU planeri mogu se dinamički učitavati i izvršavati unutar Linux kernela. Just-In-Time (JIT) kompilacija prevodi eBPF bajt kod u mašinske instrukcije za izvršenje.
  • SCHED_EXT klasa: Ovo je nova programska klasa, čiji je prioritet poziva kernela među klasama SCHED_IDLE i SCHED_NORMAL. BPF drajveri povezani na SCHED_EXT može rukovati zadacima koji imaju niži prioritet od izvršavanja u realnom vremenu, bez utjecaja na zadatke koji su već povezani s normalnim planerom SCHED_NORMAL.
  • Funkcioniranje: BPF drajveri analiziraju redove zadataka koji čekaju da se izvrše na CPU-u i biraju koji zadatak da dodijele kada se CPU jezgro oslobodi. Ako nema uključenih aktivnih BPF drajvera SCHED_EXT, zadaci se obrađuju pomoću planera SCHED_NORMAL.
  • Prednosti: Mehanizam sched_ext olakšava eksperimentisanje sa različitim tehnikama i strategijama programiranja na dinamičan način. To vam omogućava da brzo kreirate funkcionalne prototipove programera i zamijenite ih u hodu u proizvodnim okruženjima. Na primjer, može se podesiti da odgovara specifičnim karakteristikama aplikacije i promijeniti strategiju planiranja na osnovu statusa sistema i drugih faktora.

Vrijedno je to spomenuti “sched_ext” je prvobitno predložen za razmatranje od strane programera kernela 2022, nakon čega je uslijedilo izdavanje šest revizija zakrpe. Uprkos tome što nije podržan u glavnom kernelu, Nekoliko distribucija kao što su Ubuntu, Arch Linux, Fedora i NixOS nude instalaciju "sched_ext" kroz dodatne pakete. Canonical razmatra uključivanje komponenti «sched_ext» u Ubuntu 24.10, a Valve radi na svojoj integraciji za Steam Deck. U Meti, programer zasnovan na «sched_ext» već se koristi u proizvodnoj infrastrukturi.

Osim toga, spominje se da je trenutno oko desetak programera baziranih na "sched_ext", svaki sa logikom planiranja zadataka definiranom u korisničkom prostoru i učitanim u kernel pomoću BPF programa.

  1. scx_layered: Hibridni planer koji zadatke dijeli na slojeve, svaki sa svojom strategijom raspoređivanja. Omogućava vam da dodijelite određene zadatke određenim slojevima sa zagarantovanim CPU resursima ili povećate prioritet pojedinačnih aplikacija. Razvijen od strane Meta, njegova logika korisničkog prostora je napisana u Rustu.
  2. scx_rustland: Optimizirano za davanje prioriteta interaktivnim zadacima u odnosu na one koji zahtijevaju CPU. Na primjer, poboljšava FPS u igri Terraria tokom istovremene kompilacije kernela u poređenju sa standardnim EEVDF planerom. Razvijen od strane zaposlenika Canonical-a, s logikom u Rustu.
  3. scx_lavd: Implementira LAVD (Latency-criticality Aware Virtual Deadline) algoritam, smanjujući kašnjenje u kompjuterskim igrama i interaktivnim zadacima uzimajući u obzir važnost smanjenja kašnjenja i napretka procesa. Razvijen od strane Igalie i Valvea, s logikom u Rustu.
  4. scx_rusty, scx_rlfifo, scx_mitosis: Planeri koji balansiraju grupe zadataka na osnovu opterećenja, implementiraju jednostavan FIFO planer i vezuju grupe zadataka za CPU jezgre. Sve sa Rust komponentama.
  5. scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland: Primjeri programera sa C komponentama, koji demonstriraju različite mogućnosti “sched_ext”.

Na kraju, vrijedno je dodati da Google eksperimentira s korištenjem vlastitog okvira, ghOSt, kako bi utjecao na odluke planera zadataka koristeći BPF programe, te je počeo da migrira ghOSt na sched_ext. Pored toga, Google razvija port za “sched_ext” za ChromeOS.

Izvor: https://lkml.org


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.