Izlaz jezgre Linux 6.12 sa podrškom za Realtime režim

Nakon dva meseca razvoja, Linus Torvalds je predstavio izlaz jezgre Linux 6.12. Među najznačajnijim promenama su: mogućnost uključivanja Realtime režima, sched_ext za kreiranje CPU planera putem eBPF, prikaz QR koda u slučaju kvara, mehanizam Device Memory TCP, mehanizam rezervacije resursa SCHED_DEADLINE servera, poboljšanja u planeru zadataka EEVDF, IPE modul za postavljanje politika očuvanja integriteta.

U novu verziju uključeno je 14607 ispravki od 2167 developera, veličina patche-a je 37 MB (promene su obuhvatile 13087 fajlova, dodano je 507913 linija koda, obrisano 234083 linije). U prethodnom izdanju bilo je 15130 ispravki od 2078 developera, veličina patche-a je bila 85 MB (u jezgri 6.10 patch je imao veličinu od 41 MB). Otprilike 45% svih predstavljenih promena u 6.12 se odnosi na drajvere uređaja, oko 12% promena ima veze sa ažuriranjem koda specifičnog za hardverske arhitekture, 13% se odnosi na mrežni stek, 6% na fajlsisteme i 3% na unutrašnje podsisteme jezgre.

Glavne novine u jezgri 6.12:

  • Pomnilnik in sistemske storitve
    • Omogućena je izrada jezgre sa opcijom PREEMPT_RT bez dodatnih patcheva za rad u realnom vremenu. Poslednja nedostajuća mogućnost u jezgri koja nije dozvoljavala aktivaciju PREEMPT_RT režima bila je podrška za neblokirajuće atomske ispisne funkcije putem printk, koja je takođe prihvaćena u sastav jezgre. Podrška za PREEMPT_RT je dostupna za arhitekture x86, x86_64, ARM64 i RISC-V. Do sada je realizacija PREEMPT_RT režima bila isporučena u obliku eksternih patcheva, na osnovu kojih su neki distribucije, kao što su RHEL, SUSE i Ubuntu, kreirale posebne Realtime edicije svojih proizvoda, koji su traženi u oblastima kao što su finansijski sistemi, uređaji za obradu zvuka i videa, avijacija, medicina, robotika, telekomunikacije i industrijski sistemi, u kojima je potrebno obezbediti predvidivo vreme obrade događaja.
    • Dodana je funkcionalnost „sched_ext“ (SCX), koja omogućava korišćenje eBPF za kreiranje CPU planera, obuhvatajući gotovo sve aspekte planiranja izvršenja zadataka i raspodele CPU resursa. Takvi planeri mogu se dinamički učitati i izvršavati unutar jezgre Linuxa. virtualni napravi eBPF. Mehanizem sched_ext poenostavi ustvarjanje načrtovalnikov specifičnih za določene naloge, omogoča eksperimentiranje z različnimi tehnikami in strategijami načrtovanja ter hitro ustvarjanje delovnih prototipov in zamenjavo načrtovalnikov v živo v delovnih okoljih. Na primer, s pomočjo sched_ext lahko ustvarite načrtovalnik, ki upošteva specifičnosti določenega programa in dinamično spreminja strategijo načrtovanja njegovega izvajanja glede na stanje sistema in nekatere dodatne dejavnike.
    • V sestavi je vključeno preostalo število popravkov, potrebnih za delovanje mehanizma SCHED_DEADLINE server, ki rešuje težavo z neprejemanjem virov CPU od običajnih nalog v pogojih monopolizacije CPU z visoko prioritetnimi (real-time) nalogami. Da bi preprečili monopolizacijo CPU, se je v jedru prej uporabljal mehanizem Realtime throttling, ki je poskušal rezervirati 5 % za nizkoprioritete naloge, kar je pustilo 95 % časa real-time nalogam. Ta mehanizem ni bil zadosten, saj so običajne naloge v mnogih situacijah prejemale premalo procesorskega časa. SCHED_DEADLINE server implementira učinkovitejši mehanizem rezervacije virov.
    • Zaključena je integracija načrtovalnika nalog EEVDF (Earliest Eligible Virtual Deadline First), ki je zamenjal načrtovalnik CFS (Completely Fair Scheduler), ki je bil dostavljen od jedra 2.6.23. Nov načrtovalnik pri izbiri naslednjega procesa za prenos izvajanja upošteva procese, ki niso prejele ustreznih procesorskih virov ali so prejele nezasluženo veliko procesorskega časa. V prvem primeru se prisili prenos upravljanja na proces, v drugem pa se nasprotno odloži. Stari načrtovalnik CFS je uporabljal heuristiko in natančne nastavitve za določitev procesov, ki potrebujejo posebno pozornost, medtem ko novi načrtovalnik te procese spremlja bolj neposredno in ne zahteva natančnih nastavitev. Predvideva se, da bo EEVDF zmanjšal zamude pri izvajanju nalog, pri katerih je CFS imel težave z načrtovanjem.
    • V obdelovalniku napak jedra — DRM Panic, ki uporablja podsistem DRM (Direct Rendering Manager) za prikaz vizualnega poročila v slogu 'modrega zaslona smrti', je dodana možnost prikaza logotipa in QR kode s poročilom kmsg na zaslonu v primeru nujnega stanja. Ker QR koda sprejme le 2953 bajtov, je predvidena možnost DRM_PANIC_SCREEN_QR_CODE_URL, pri kateri se poročilo kmsg stisne s pomočjo zlib in priloži kot parameter URL, kar omogoča prenos približno 7500 bajtov preko QR kode V40. Pri gradnji paketov z jedrom lahko distribucije določijo osnovno povezavo za URL, kar omogoči prehod na stran za posredovanje sporočila o težavi. Za izbiro formata QR kode je predvidena nastavitev DRM_PANIC_SCREEN_QR_VERSION.
    • Dodana je podpora za razširitev ARM POE (Permission Overlay Extension), ki omogoča dodeljevanje pravic dostopa do območij pomnilnika. S to razširitvijo je mogoče na sistemih s procesorji ARM64 uresničiti mehanizem Memory Protection Keys, ki se uporablja za omejevanje dostopa do pomnilniških strani brez spreminjanja tabel pomnilnika.
    • Za arhitekture Loongarch, ARM64, PowerPC in s390 je bila prenesena implementacija sistemskega klica getrandom(), optimizirana s pomočjo mehanizma vDSO (virtual dynamic shared object), ki omogoča prenos obdelovalnika sistemskega klica iz jedra v uporabniški prostor in se izogne preklapanju konteksta. Optimizacija omogoča do 15-kratno pospešitev pridobivanja naključnih števil.
    • V podsistem asimetričnega vnosa/izpisa io_uring je dodana možnost uporabe absolutnih časovnih omejitev, ki se sprožijo, ko dosežejo določeno časovno točko na sistemskih urah (prej so bile lahko nastavljene le relativne časovne omejitve, v katerih je bila navedena trajanje od začetka operacije).
    • Dodani so datoteke za ustvarjanje vezij za knjižnico libcpupower s pomočjo orodij SWIG, ki omogoča oblikovanje vezij iz kode C/C++ za različne programske jezike. Vezja omogočajo ustvarjanje skriptov v Pythonu in drugih jezikih ter njihovo uporabo za širitev funkcionalnosti knjižnice libcpupower, ki nudi API za upravljanje cpufreq in gonilnikov iz uporabniškega prostora.
    • V orodju cpuidle je implementirano prikazovanje vrednosti stanja mirovanja 'residency', ki se uporablja za realtime sisteme in upošteva minimum časa, ki ga mora procesor preživetý v stanju mirovanja, da upraviči stroške energije za prehod v to stanje in iz njega.
    • Dodana je možnost uporabe prevajalnika Clang za gradnjo standardne C knjižnice nolibc, ki je vključena v izvorne kode jedra Linux in zagotavlja obravnavo osnovnih sistemskih klicev. Pri gradnji nolibc s Clang je možno uporabiti optimizacijo v fazi povezovanja (LTO).
    • Nekateri vmesniki cgroup1 so razglašeni za zastarele, kot so računanje TCP, prva različica mehkih omejitev (soft limit) in upravljanje z izčrpavanjem prostega pomnilnika. Podpora navedenih funkcij ostaja v celoti ohranjena, opozorilo pa je izdano za raziskovanje števila uporabnikov, ki še naprej uporabljajo te možnosti.
    • Dodana je možnost konfiguracije obročne naprave za sledenje za shranjevanje zbranih podatkov po ponovnem zagonu, kar bo preprečilo izgubo zbrane informacijske podatke ob nenadnem zaključku delovanja jedra. Podatki se shranijo v pomnilnik. Aktiviranje se izvede preko parametra ukazne vrstice jedra trace_instance, na primer, nastavitev 'trace_instance=boot_map@0x285400000:12M' bo rezervirala 12 MB pomnilnika na naslovu 0x285400000 za obroč 'boot_map', ki bo dostopen preko datoteke /sys/kernel/tracing/instances/boot_map.
    • Nadaljuje se prenos sprememb iz veje Rust-for-Linux, povezanih z uporabo jezika Rust kot drugega jezika za razvoj gonilnikov in modulov jedra (podpora Rust ni privzeto aktivirana, kar ne povzroči vključitve Rust-a med obvezne odvisnosti za gradnjo jedra). Dodani so moduli 'list' in 'rbtree' za delo z obojestranskimi povezanimi seznami in rdeče-črnimi iskalnimi drevesi (red-black tree). Razširjene so zmogljivosti modulov 'init', 'sync', 'types' in 'error'. Omogočeno je uporabljati kodo v Rust-u pri gradnji jedra s zaščito pred napadi Spectre (možnosti MITIGATION_{RETHUNK, RETPOLINE, SLS}), uporabo sistemske odpravljalne pomoči KASAN, mehanizmi zaščite kCFI (kernel Control Flow Integrity) in Shadow Call, prav tako pri uporabi dodatnih GCC vtičnikov. Dodan je gonilnik za Ethernet krmilnik Applied Micro QT2025 PHY, napisan v Rust-u. Pripravljena je ločena spletna stran z dokumentacijo — rust.docs.kernel.org.
    • V sestavi izvornih besedil jedra je dodana orodje xdrgen za pretvorbo XDR-specifikacij (eXternal Data Representation) v funkcije kodiranja in dekodiranja XDR, napisane v slogu C, sprejetem v jedru Linux.
    • V jedro je sprejeta sprememba, ki vključuje mehanizem maskiranja kazalnikov za zmanjšanje števila počasnih klicev barrier_nospec() v 64-bitni funkciji copy_from_user(), ki se uporablja za kopiranje podatkov v jedro iz uporabniškega prostora. Uporaba maskiranja pospeši postopek za 2.6% pri testu 'per_thread_ops', ki ocenjuje število operacij, ki jih je mogoče izvesti v enem niti.
    • Dodano je novo USB gonilo, ki omogoča uporabo protokola 9pfs kot transporta za prenos in sprejem podatkov z USB naprave, pri montiranju datotečnega sistema 9p preko USB (na primer, 'mount -t 9p -o trans=usbg,aname=/path/to/fs /mnt/9'). Kot primer uporabe novega gonila se navaja uporaba namesto NFS za organizacijo nalaganja korenskega razdelka pri razvoju vgrajenih naprav.
  • Дисковая подсистема, ввод/вывод и файловые системы
    • V podsystem VFS je dodana možnost dela s shranjevalnimi napravami, katerih velikost blokov je večja od velikosti pomnilniške strani v sistemu. V datotečnih sistemih ta možnost trenutno podpira le XFS.
    • V podsystemu FUSE, ki omogoča ustvarjanje implementacij datotečnih sistemov, ki delujejo v uporabniškem prostoru, je bila dodana podpora za preslikovanje identifikatorjev uporabnikov pritrjenih datotečnih sistemov, ki se uporablja za usklajevanje datotek določenega uporabnika na pritrjenem tujem razdelku z drugim uporabnikom v trenutnem sistemu.
    • Izvedena je nova fcntl-operacija F_CREATED_QUERY, ki daje aplikaciji možnost, da določi, ali je bil datoteka, odprta z uporabniškim zastavico O_CREAT, ustvarjena ali je že obstajala pred tem.
    • V sistemski klic name_to_handle_at() je bila dodana možnost uporabe edinstvenih 64-bitnih identifikatorjev točk montaže za izključitev stanja dirke pri razčlenjevanju /proc/mountinfo.
    • Velikost strukture "file" v jedru je bila zmanjšana s 232 na 184 bajtov, kar omogoča zmanjšanje porabe pomnilnika na sistemih, ki aktivno delujejo z datotekami.
    • Montaža datotečnih sistemov na točke montaže znotraj hierarhije /proc, na primer v /proc/PID/fd, je prepovedana, kar bi lahko povzročilo potencialne varnostne težave.
    • V psevdodatotečnem sistemu NSFS (NameSpace FS), ki se uporablja za delo z imenskimi prostori, je bila izvedena dodatna informacija o imenskih prostorih točk montaže.
    • V datotečnem sistemu EROFS (Extendable Read-Only File System), namenjenem uporabi na razdelkih, dostopnih v načinu samo za branje, je podpora za montažo datotečnih sistemov neposredno iz diskovnih slik, shranjenih v obliki datotek.
    • V XFS so dodane nove ioctl-ukazi XFS_IOC_START_COMMIT in XFS_IOC_COMMIT_RANGE za izmenjavo vsebine med dvema datotekama.
    • V NFS je bila dodana podpora protokolu "LOCALIO", ki omogoča določitev, ali sta stranka in strežnik NFS na istem gostitelju, da se uporabijo ustrezne optimizacije.
    • V datotečnem sistemu Btrfs so predlagane optimizacije zmogljivosti, izvedena je preureditev kode, zmanjšano je območje zaklepanja ekstenzov pri operacijah branja, nadaljevalo se je delo na prehodu na uporabo zvezkov strani pomnilnika (page folios) in uvedeno je samodejno sproščanje pomnilnika za strukturo btrfs_path.
    • V datotečnem sistemu Ext4 so bile odpravljene napake, povezane z dodeljevanjem blokov, upravljanjem ekstenzov, mehanizmom "fast commit" in beleženjem.
  • Virtualizacija in varnost
    • Dodan je LSM modul IPE (Integrity Policy Enforcement), koji je razvio Microsoft za proširenje postojeće sistemske mandatske kontrole pristupa. Modul omogućava definiranje opće politike osiguranja cjelovitosti za cijeli sustav, koja određuje koje operacije su dozvoljene i na koji način treba verifikovati autentičnost komponenti. Na primjer, pomoću IPE-a moguće je odrediti koje izvršne datoteke se smiju pokretati uz provjeru njihove usklađenosti s referentnom verzijom koristeći kriptografske heševe koje pruža dm-verity sustav.
    • Tijekom faze kompilacije jezgre omogućeno je odvojeno uključivanje dostupnih metoda zaštite od različitih ranjivosti klase Spectre u CPU-u. U Kconfigu su predložene nove opcije: MITIGATE_MDS (zaštita od ranjivosti Microarchitectural Data Sampling), MITIGATE_TAA (zaštita od ranjivosti TSX Asynchronous Abort), MITIGATE_MMIO_STALE_DATA (zaštita od ranjivosti MMIO Stale Data), MITIGATE_L1TF (zaštita od ranjivosti L1 Terminal Fault), MITIGATE_RETBLEED (zaštita od ranjivosti Retbleed), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V2 (zaštita od ranjivosti Spectre), MITIGATE_SRBDS (zaštita od ranjivosti Special Register Buffer Data Sampling), MITIGATE_SSB (zaštita od ranjivosti Speculative Store Bypass).
    • Dodana je opcija komandne linije proc_mem.force_override i skup build postavki u Kconfigu (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE i PROC_MEM_FORCE_NEVER), koji omogućuju zabranu promjene memorije preko /proc/pid/mem.
    • LSM (Linux security module) podsustav prešao je na korištenje statičkih poziva, što je poboljšalo sigurnost i povećalo performanse.
    • Omogućena je upotreba standardnih jezgri za arhitekturu ARM64 u virtuelnim okruženjima koja se rade na Android sistemima s modificiranim hipervizorom KVM (zaštićeni KVM).
    • U LSM modulu Landlock, koji omogućava ograničavanje interakcije grupe procesa s vanjskim okruženjem, realizovana je koncepcija "IPC scoping" za selektivno ograničavanje interakcije s sandbox okruženjima, koristeći Unix sokete i signale. Na primjer, moguće je zabraniti uspostavljanje veza korištenjem Unix soketa iz sandbox okruženja s procesima kojima se izolacija ne primjenjuje, ali dozvoliti veze s procesima unutar iste scope oblasti.
    • U hipervizoru KVM u CPUID-u za gostujuće sisteme dodat je flag koji signalizira podršku za ekstenzije AVX10.1.
  • Mrežna podsistem
    • Dodana je mehanizam Device Memory TCP, koji omogućava korišćenje mrežnih soketa za direktno slanje sadržaja memorije perifernih uređaja preko mreže (zero-copy mode) i direktno postavljanje sadržaja mrežnih paketa u memoriju uređaja na strani primaoca. Podaci preneseni u paketima se direktno šalju od mrežne kartice u memoriju perifernog uređaja ili iz memorije uređaja u mrežnu karticu, preskočivši CPU, dok se zaglavlja paketa smeštaju u standardne baferi jezgra.
    • Proširene su mogućnosti mnogih Ethernet i bežičnih drajvera. Na primer, u drajveru Intel iwlwifi dodata je podrška za iznošenje operacija RLC/SMPS na stranu firmware-a, u drajveru RealTek rtw89 poboljšane su performanse i dodata podrška za čipove RTL8852BT/8852BE-VT (WiFi 6), a u Ethernet drajveru microchip dodata je podrška za specifikacije IEEE 802.3bw (100BASE-T1) i IEEE 802.3bp, poboljšane su implementacije virtuelnih Ethernet Microsoft vNIC i IBM veth. Dodani su novi drajveri za Ethernet čipove Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 i Microchip LAN8650/1 10BASE-T1S MAC-PHY.
    • U MPTCP (MultiPath TCP), ekstenziji TCP protokola za organizaciju isporuke TCP paketa istovremeno putem više ruta kroz različite mrežne interfejse, veličina korišćenih pri rutiranju težinskih koeficijenata povećana je sa 8 na 16 bita. Implementirano je određivanje gubitničkog (blackhole) saobraćaja i privremeno prekidanje pokušaja uspostavljanja veza sa sistemima koji dovode do gubitka saobraćaja.
    • Za IPv6 implementirana je podrška za oznaku 'p' u PIO (Prefix Information Option), koja se koristi u RA (IPv6 Router Advertisements) za izbor modela postavljanja klijenata preko DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) umesto dodele pojedinačnih adresa na bazi prefiksa koristeći SLAAC (Stateless Address Autoconfiguration). U IPv6 IOAM6 dodata je podrška za novi režim obavijanja tunsrc, što omogućava postizanje viših performansi.
    • Povećane su performanse obrade kontrolnih paketa IPsec.
    • Povećane su performanse praznjenja (flush) velikih skupova pravila nftables. U nfnetlink_queue poboljšana je podrška za SCTP protokol.
    • U API ethtool dodata je podrška za vezivanje više mrežnih kartica na jedan mrežni interfejs.
  • Oprema
    • U drajveru AMDGPU nastavljena je implementacija podrške za GPU AMD RDNA4 ('GFX12'). Dodana je mogućnost praznjenja pojedinačnih redova zadataka bez resetovanja celog GPU-a.
    • Delo se nadaljuje z razvojem drm-pogona (Direct Rendering Manager) Xe za GPU na osnovi arhitekture Intel Xe, ki se uporablja v grafičnih karticah Intel iz družine Arc in v integrirani grafiki od procesorjev Tiger Lake naprej. Nova različica vključuje podporo za GPU na osnovi mikroarhitektur Battlemage in Lunar Lake. Predstavljena je podpora za CCS-modifikatorje (Color Control Surface) Xe2 za upravljanje parametrov vgrajenih in diskretnih GPU.
    • V pogonu i915 je dodana možnost izhoda preko vmesnika HWMON ali sysfs (atribut „fan1_input“) za informacije o hitrosti vrtenja ventilatorja. Parameter „i915.modeset“ je razglašen za zastarelega, namesto „i915.modeset=0“ je treba uporabiti parameter „i915.nomodeset“.
    • V DRM-pogonu msm (GPU Qualcomm Adreno) je dodana podpora za GPU A615, A306 in A621.
    • V pogonu Nouveau je bila izvedena prenova in čiščenje notranjih struktur.
    • V pogonu intel_pstate, ki upravlja parametre porabe energije (P-state) na sistemih s procesorji Intel, je dodana podpora za hibridne sisteme z asimetričnimi (različnimi po značilnostih) CPU-ji, ter podporo za upravljanje porabe procesorjev na osnovi mikroarhitektur Granite Rapids in Sierra Forest. V pogonu intel_idle je dodana podpora za CPU Xeon Granite Rapids. V pogonu intel_rapl je bila omogočena prepoznava procesov AMD družine 1Ah in procesorjev Intel ArrowLake-U.
    • Nadaljuje se uvajanje sprememb za podporo ARM SoC Snapdragon X Elite, ki uporablja lastni 12-jedrni CPU Qualcomm Oryon in GPU Qualcomm Adreno. Čip je usmerjen v uporabo v prenosnih računalnikih in PC-ih, ter prekaša številne teste zmogljivosti čipov Apple M3 in Intel Core Ultra 155H.
    • Dodana je podpora za ARM-plošče, SoC in naprave: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/A6010, Surface Laptop 7, Anbernic RG35XXSP, Firefly Core-PX30-JD4, Lunzn Fastrhino R68S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS433, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R2S Plus, ExynosAuto v920, SOPHGO SG2002, Qualcomm IPQ5332, LG G4 (h815), Cool Pi CM5 GenBook, Anbernic RG35XXSP, GameForce Ace, IBM P11, Kontron i.MX93 OSM-S, NanoPC-T6.
    • Dodana je podpora za zaslonske panele Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08A, AOU B116XTN02.3, AUO B116XAN06.1, AOU B116XAT04.1, BOE TV101WUM-LL2, BOE NV140WUM-N41, BOE NV133WUM-N63, BOE NV116WHM-A4D, BOE NE140WUM-N6G, CMN N116BCA-EA2, CMN N116BCP-EA2, CSW MNB601LS1-4, Starry er88577.
    • V zvočni sistem je bila dodana podpora za čipe in kodeke RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825. Stari zvočni gonilniki za ASoC Intel so razglašeni za zastarele, namesto katerih se priporoča uporaba gonilnikov AVS. Vgonilniku SoundWire je bilo uvedenih veliko izboljšav.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster