Izdanje kernela Linux 6.12 s podrškom za rad u stvarnom vremenu

Nakon dva mjeseca razvoja, Linus Torvalds je objavio kernel. Linux 6.12. Među najznačajnijim promjenama: mogućnost omogućavanja načina rada u stvarnom vremenu, sched_ext za stvaranje CPU planera putem eBPF-a, izlaz QR koda u izvanrednim uvjetima, TCP mehanizam memorije uređaja, mehanizam rezervacije resursa poslužitelja SCHED_DEADLINE, poboljšanje EEVDF planera zadataka, IPE modul za postavljanje politika integriteta.

Nova verzija uključuje 14607 popravaka od 2167 programera, veličina zakrpe je 37 MB (promjene su utjecale na 13087 datoteka, dodano je 507913 linija koda, 234083 linije su izbrisane). Zadnje izdanje imalo je 15130 popravaka od 2078 programera, veličina zakrpe bila je 85 MB (u kernelu 6.10 zakrpa je bila veličine 41 MB). Oko 45% svih promjena uvedenih u 6.12 odnosi se na upravljačke programe uređaja, približno 12% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 13% se odnosi na mrežni stog, 6% se odnosi na sustave datoteka, a 3% povezani su s unutarnjim podsustavima jezgre.

Ključne inovacije u kernelu 6.12:

  • Memorija i usluge sustava
    • Sada je dostupna mogućnost izgradnje kernela s opcijom PREEMPT_RT bez dodatnih zakrpa za rad u stvarnom vremenu. Posljednja nedostajuća značajka kernela koja je sprječavala omogućavanje PREEMPT_RT načina rada bila je podrška za neblokirajući atomski izlaz putem funkcije printk, koja je također uključena u kernel. Podrška za PREEMPT_RT dostupna je za arhitekture x86, x86_64, ARM64 i RISC-V. Do sada je implementacija PREEMPT_RT načina rada bila dostupna u obliku vanjskih zakrpa, koje neke distribucije, kao što su RHEL, SUSE i Ubuntu, stvorili su zasebna izdanja svojih proizvoda u stvarnom vremenu, tražena u područjima kao što su financijski sustavi, uređaji za obradu zvuka i videa, zrakoplovstvo, medicina, robotika, telekomunikacije i industrijski sustavi, gdje je potrebno osigurati predvidljivo vrijeme obrade događaja.
    • Dodan je mehanizam "sched_ext" (SCX) koji omogućuje korištenje eBPF-a za stvaranje CPU planera koji pokrivaju gotovo sve aspekte raspoređivanja zadataka i dodjele CPU resursa. Takvi planeri mogu se dinamički učitati i izvršavati unutar kernela. Linux в virtualni stroj eBPF. Mehanizam sched_ext pojednostavljuje stvaranje planera specifičnih za zadatke, omogućuje eksperimentiranje s raznim tehnikama i strategijama raspoređivanja te omogućuje brzo stvaranje radnih prototipova i zamjenu planera u hodu u produkcijskim infrastrukturama. Na primjer, pomoću sched_ext možete stvoriti planer koji uzima u obzir specifičnosti određene aplikacije i dinamički mijenja svoju strategiju raspoređivanja ovisno o stanju sustava i drugim čimbenicima.
    • Sastav uključuje preostali dio zakrpa potrebnih za rad serverskog mehanizma SCHED_DEADLINE koji rješava problem neiskorištenosti CPU resursa običnim zadacima kada je CPU monopoliziran zadacima visokog prioriteta (u realnom vremenu). Kako bi spriječio monopolizaciju CPU-a, kernel je prethodno koristio mehanizam za prigušivanje u stvarnom vremenu, koji je pokušavao rezervirati 5% za zadatke niskog prioriteta, ostavljajući 95% vremena za zadatke u stvarnom vremenu. Ovaj mehanizam ostavio je mnogo za poželjeti, jer obični zadaci u mnogim situacijama nisu dobili dovoljno procesorskog vremena. Poslužitelj SCHED_DEADLINE implementira učinkovitiji mehanizam rezervacije resursa.
    • Završena je integracija EEVDF (Earliest Eligible Virtual Deadline First) planera zadataka, koji je zamijenio CFS (Completely Fair Scheduler) planer, isporučen počevši od kernela 2.6.23. Prilikom odabira sljedećeg procesa za prijenos izvršenja, novi planer uzima u obzir procese koji nisu dobili dovoljno procesorskih resursa ili su dobili nezasluženo veliku količinu procesorskog vremena. U prvom slučaju, prijenos kontrole na proces je prisilan, au drugom, naprotiv, odgađa se. Stari CFS planer koristio je heuristiku i fino podešavanje za prepoznavanje procesa kojima je potrebna posebna pozornost, dok ih novi planer nadzire eksplicitnije i ne zahtijeva fino podešavanje. Očekuje se da će EEVDF smanjiti kašnjenja u zadacima s kojima je CFS imao problema s rasporedom.
    • U kernelu za hitne slučajeve - DRM Panic, koji koristi podsustav DRM (Direct Rendering Manager) za prikaz vizualnog izvješća u stilu "plavog ekrana smrti", mogućnost prikaza logotipa i QR koda s kmsg izvješćem na ekranu kada se pojavi hitno stanje je dodano. Budući da samo 2953 bajta stane u QR kod, dostupna je opcija DRM_PANIC_SCREEN_QR_CODE_URL, u kojoj se kmsg izvješće komprimira pomoću zliba i prilaže kao parametar URL-u, što omogućuje prijenos oko 40 bajtova kroz V7500 QR kod. Prilikom izrade paketa s kernelom, distribucije mogu postaviti osnovni URL za URL, što će im omogućiti navigaciju do stranice za prijavu problema. Za odabir formata QR koda dostupna je postavka DRM_PANIC_SCREEN_QR_VERSION.
    • Dodana podrška za ARM POE (Permission Overlay Extension), koja vam omogućuje postavljanje prava pristupa memorijskim područjima. Pomoću ovog proširenja, na sustavima s ARM64 procesorima, može se implementirati mehanizam Memory Protection Keys koji se koristi za ograničavanje pristupa memorijskim stranicama bez mijenjanja tablice memorijskih stranica.
    • Za arhitekture Loongarch, ARM64, PowerPC i s390, implementacija getrandom() sistemskog poziva je premještena, optimizirana korištenjem mehanizma vDSO (virtualni dinamički dijeljeni objekt), koji omogućuje premještanje rukovatelja sistemskim pozivima iz kernela u korisničkog prostora i izbjegavajte promjene konteksta. Optimizacija vam omogućuje da ubrzate generiranje nasumičnih brojeva do 15 puta.
    • Mogućnost korištenja apsolutnih vremenskih ograničenja, koja se aktiviraju kada se dostigne određeno vrijeme na satu sustava, dodana je u io_uring asinkroni ulazno/izlazni podsustav (ranije su se mogla postaviti samo relativna vremenska ograničenja, koja su označavala trajanje od početka operacije ).
    • Dodane su datoteke za generiranje povezivanja za biblioteku libcpupower pomoću SWIG alata, koji vam omogućuje generiranje povezivanja iz C/C++ koda za različite programske jezike. Vezovi vam omogućuju stvaranje skripti u Pythonu i drugim jezicima te njihovu upotrebu za proširenje funkcionalnosti biblioteke libcpupower, koja pruža API za upravljanje cpufreqom i upravljačkim programima iz korisničkog prostora.
    • Uslužni program cpuidle prikazuje vrijednost "prebivanja" u stanju mirovanja, koja se koristi za sustave u stvarnom vremenu i uzima u obzir minimalno vrijeme koje procesor mora biti u stanju mirovanja kako bi se opravdali troškovi energije prijelaza u ovo stanje i iz njega.
    • Dodana je mogućnost korištenja Clang kompajlera za izgradnju standardne C biblioteke nolibc, koja je uključena u izvorni kod kernela. Linux i pruža omotač oko osnovnih sistemskih poziva. Prilikom izgradnje nolibc-a u Clangu, omogućena je optimizacija vremena povezivanja (LTO).
    • Neka sučelja cgroup1 su zastarjela, kao što je TCP računovodstvo, verzija XNUMX mekog ograničenja i upravljanje iscrpljenošću memorije. Podrška za ove značajke za sada ostaje puna, a upozorenje je da se prouči broj korisnika koji nastavljaju koristiti ove značajke.
    • Dodana je mogućnost konfiguracije međuspremnika praćenja prstena za spremanje akumuliranih podataka nakon ponovnog pokretanja, što će vam omogućiti da ne izgubite akumulirane informacije o otklanjanju pogrešaka u slučaju pada kernela. Podaci se pohranjuju u memoriju. Omogućavanje se vrši putem parametra naredbenog retka jezgre trace_instance, na primjer, postavljanje “trace_instance=boot_map@0x285400000:12M” rezervirat će 12 MB memorije na 0x285400000 za međuspremnik “boot_map”, kojem će se pristupiti putem datoteke /sys/kernel /tracing/instances/boot_map.
    • Nastavak migracije promjena iz Rust-for-branchLinux, vezano uz korištenje Rusta kao drugog jezika za razvoj upravljačkih programa i modula kernela (podrška za Rust nije aktivna prema zadanim postavkama i ne uključuje Rust među potrebne ovisnosti izgradnje kernela). Dodani su moduli 'list' i 'rbtree' za rad s dvostruko povezanim listama i crveno-crnim stablima pretraživanja. Proširene su mogućnosti modula 'init', 'sync', 'types' i 'error'. Mogućnost korištenja Rust koda pri izgradnji kernela sa zaštitom od Spectre napada (opcije MITIGATION_{RETHUNK,RETPOLINE,SLS}), korištenjem KASAN sustava za otklanjanje pogrešaka, mehanizama zaštite kCFI (kernel Control Flow Integrity) i Shadow Call te pri korištenju dodatnih GCC dodataka. Dodan je upravljački program za Applied Micro QT2025 PHY Ethernet kontroler, napisan u Rustu. Pripremljena je zasebna web stranica s dokumentacijom: rust.docs.kernel.org.
    • U izvorni kod kernela dodan je uslužni program xdrgen za pretvaranje XDR (eXternal Data Representation) specifikacija u XDR funkcije kodiranja i dekodiranja napisane korištenjem C stila koji je usvojila kernel. Linux.
    • Kernel je izmijenjen kako bi se implementirao mehanizam maskiranja pokazivača kako bi se smanjio broj sporih poziva barrier_nospec() u 64-bitnoj copy_from_user() funkciji, koja se koristi za kopiranje podataka u kernel iz korisničkog prostora. Korištenje maskiranja ubrzava test "per_thread_ops", koji procjenjuje broj operacija koje se mogu izvesti u jednoj niti, za 2.6%.
    • Dodan je novi USB upravljački program koji vam omogućuje korištenje 9pfs protokola kao prijenosa za slanje i primanje podataka s USB uređaja kada montirate 9p datotečni sustav preko USB-a (na primjer, “mount -t 9p -o trans=usbg, ime=/put/do/ fs /mnt/9"). Primjer korištenja novog upravljačkog programa je korištenje NFS-a umjesto organiziranja pokretanja root particije prilikom razvoja ugrađenih uređaja.
  • Diskovni podsustav, I/O i datotečni sustavi
    • VFS podsustavu dodana je mogućnost rada s uređajima za pohranu čija je veličina bloka veća od veličine memorijske stranice u sustavu. U datotečnim sustavima ova je značajka trenutno podržana samo u XFS-u.
    • Podsustav FUSE, koji vam omogućuje stvaranje implementacija datotečnih sustava koji rade u korisničkom prostoru, dodao je podršku za mapiranje korisničkih identifikatora montiranih datotečnih sustava, koji se koriste za podudaranje datoteka određenog korisnika na montiranoj stranoj particiji s drugim korisnikom na trenutnoj sustav.
    • Implementirana je nova fcntl operacija, F_CREATED_QUERY, dajući aplikaciji mogućnost utvrđivanja je li datoteka otvorena pomoću oznake O_CREAT stvorena ili je već postojala prije.
    • Dodana je mogućnost korištenja jedinstvenih 64-bitnih ID-ova točaka montiranja u sistemski poziv name_to_handle_at() kako bi se izbjegli uvjeti utrke prilikom parsiranja /proc/mountinfo.
    • Veličina strukture "datoteke" u jezgri smanjena je s 232 na 184 bajta, što smanjuje potrošnju memorije na sustavima koji aktivno rade s datotekama.
    • Montiranje datotečnih sustava na točke montiranja unutar /proc hijerarhije, kao što je /proc/PID/fd, bilo je zabranjeno, što je stvorilo potencijalne sigurnosne probleme.
    • Pseudo-FS NSFS (NameSpace FS), koji se koristi za rad s prostorima imena, pruža dodatne informacije o prostorima imena točaka montiranja.
    • Datotečni sustav EROFS (Extendable Read-Only File System), dizajniran za korištenje na particijama samo za čitanje, sada podržava montiranje datotečnih sustava izravno sa slika diska spremljenih kao datoteke.
    • Nove ioctl naredbe XFS_IOC_START_COMMIT i XFS_IOC_COMMIT_RANGE dodane su u XFS za razmjenu sadržaja između dvije datoteke.
    • NFS ima dodanu podršku za protokol "LOCALIO", što vam omogućuje da utvrdite jesu li klijent i server NFS na istom hostu kako bi se omogućile odgovarajuće optimizacije.
    • U datotečnom sustavu Btrfs predložene su optimizacije performansi, kod je refaktoriran, područje zaključavanja opsega tijekom operacija čitanja je smanjeno, nastavljen je rad na pretvaranju memorijskih stranica za korištenje folija stranica i automatsko oslobađanje memorije implementiran za strukturu btrfs_path.
    • U Ext4 datotečnom sustavu ispravljene su greške vezane uz dodjelu blokova, upravljanje ekstentima, brzo predaju i vođenje dnevnika.
  • Virtualizacija i sigurnost
    • Dodan IPE (Integrity Policy Enforcement) LSM modul, koji je razvio Microsoft za proširenje postojećeg obveznog sustava kontrole pristupa. Modul vam omogućuje da definirate opću politiku integriteta za cijeli sustav, naznačujući koje su operacije dopuštene i kako treba provjeriti autentičnost komponenti. Na primjer, korištenjem IPE-a možete odrediti koje se izvršne datoteke smiju pokretati, uzimajući u obzir njihovu usklađenost s referentnom verzijom pomoću kriptografskih hashova koje pruža dm-verity sustav.
    • U fazi kompilacije kernela, moguće je odvojeno omogućiti dostupne metode zaštite od različitih ranjivosti Spectre klase u CPU-u. Kconfig nudi nove parametre: 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), UMITIGATE_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 opcija naredbenog retka proc_mem.force_override i skup postavki izgradnje u Kconfigu (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE i PROC_MEM_FORCE_NEVER) za sprječavanje promjena memorije putem /proc/pid/mem.
    • LSM podsustav (Linux sigurnosni modul) prebačen je na korištenje statičkih poziva, što je poboljšalo sigurnost i performanse.
    • Mogućnost korištenja standardnih jezgri za ARM64 arhitekturu u gostujućim okruženjima koja rade na Android-sustavi s modificiranim KVM hipervizorom (zaštićeni KVM).
    • Modul Landlock LSM, koji vam omogućuje da ograničite interakciju grupe procesa s vanjskim okruženjem, implementira koncept "IPC scoping" za selektivno ograničavanje interakcije s sandbox okruženjima koristeći Unix utičnice i signale. Na primjer, možete zabraniti veze koje koriste Unix utičnice iz sandbox okruženja za procese koji nemaju primijenjenu izolaciju, ali dopuštaju veze s procesima u istom opsegu.
    • U KVM hipervizoru CPUID-u za gostujuće sustave dodana je oznaka koja označava podršku za AVX10.1 proširenja.
  • Mrežni podsustav
    • Dodan je TCP mehanizam memorije uređaja koji omogućuje korištenje mrežnih utičnica za izravno slanje sadržaja memorije perifernih uređaja preko mreže (način bez kopiranja) i izravno postavljanje sadržaja mrežnih paketa u memorijsko područje uređaja na strani primatelja. Podaci koji se prenose u paketima prenose se s mrežne kartice u memoriju perifernog uređaja ili iz memorije uređaja izravno na mrežnu karticu, zaobilazeći CPU, a zaglavlja paketa završavaju u redovnim međuspremnicima jezgre.
    • Proširene su mogućnosti mnogih Ethernet i bežičnih upravljačkih programa. Na primjer, upravljački program Intel iwlwifi dodao je podršku za premještanje RLC/SMPS operacija na stranu firmvera, upravljački program RealTek rtw89 povećao je performanse i dodao podršku za RTL8852BT/8852BE-VT (WiFi 6) čipove, upravljački program za mikročip Ethernet dodao je podršku za IEEE 802.3 bw (100BASE) specifikacije -T1) i IEEE 802.3bp, Microsoft vNIC i IBM veth virtualne Ethernet implementacije su poboljšane. Dodani su novi upravljački programi za Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 i Microchip LAN8650/1 10BASE-T1S MAC-PHY Ethernet čipove.
    • U MPTCP (MultiPath TCP), proširenju TCP protokola za organiziranje dostave TCP paketa istovremeno duž nekoliko ruta kroz različita mrežna sučelja, veličina težina korištenih u usmjeravanju povećana je s 8 na 16 bita. Implementirana detekcija izgubljenog (blackhole) prometa i obustava na neko vrijeme pokušaja uspostavljanja veze sa sustavima što dovodi do gubitka prometa.
    • Za IPv6 implementirana je podrška za oznaku "p" u PIO (Opcija prefiksnih informacija), koja se koristi u RA oglasima (IPv6 Router Advertisements) za odabir klijentskog modela implementacije putem DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) umjesto dodjele pojedinačne adrese temeljene na prefiksima koristeći SLAAC (Stateless Address Autoconfiguration). IPv6 IOAM6 dodaje podršku za novi način enkapsulacije tunsrc za poboljšane performanse.
    • Poboljšana izvedba za obradu IPsec kontrolnih paketa.
    • Poboljšana izvedba ispiranja velikih skupova pravila nftables. nfnetlink_queue ima poboljšanu SCTP podršku.
    • ethtool API je dodao podršku za vezanje više mrežnih kartica na jedno mrežno sučelje.
  • Оборудование
    • U AMDGPU upravljačkom programu nastavlja se rad na implementaciji podrške za AMD RDNA4 ("GFX12") GPU-ove. Dodana je mogućnost resetiranja pojedinačnih redova zadataka bez resetiranja cijelog GPU-a.
    • Nastavljen je rad na pokretačkom programu Xe drm (Direct Rendering Manager) za GPU-ove temeljene na Intel Xe arhitekturi, koji se koristi u grafičkim karticama obitelji Intel Arc i integriranoj grafici, počevši od Tiger Lake procesora. Nova verzija uključuje podršku za GPU-ove koji se temelje na mikroarhitekturama Battlemage i Lunar Lake. Uvedena je podrška za Xe2 CCS (Color Control Surface) modifikatore za kontrolu parametara integriranih i diskretnih GPU-ova.
    • Upravljački program i915 implementira mogućnost ispisivanja informacija o brzini ventilatora putem HWMON ili sysfs sučelja (atribut "fan1_input"). Parametar "i915.modeset" je zastario; trebao bi se koristiti parametar "i915.nomodeset" umjesto "i0.modeset=915".
    • Dodana je podrška za A615, A306 i A621 GPU u msm DRM upravljački program (Qualcomm Adreno GPU).
    • Nouveau driver ima prerađene i očišćene unutarnje strukture.
    • Upravljački program intel_pstate, koji kontrolira parametre potrošnje energije (P-state) na sustavima s Intelovim procesorima, dodao je podršku za hibridne sustave s asimetričnim (različitih karakteristika) CPU-ima, kao i podršku za upravljanje napajanjem procesora temeljenih na Granite Rapids i Sierra Forest mikroarhitekture. Dodana podrška za Xeon Granite Rapids CPU intel_idle drajveru. Upravljački program intel_rapl omogućuje prepoznavanje procesa obitelji AMD 1Ah i procesora Intel ArrowLake-U.
    • Nastavak uključivanja promjena za podršku ARM SoC Snapdragon X Elite, koji koristi Qualcommov vlastiti 12-jezgreni Oryon CPU i Qualcomm Adreno GPU. Čip je namijenjen za korištenje u prijenosnim i osobnim računalima, a ispred je Apple M3 i Intel Core Ultra 155H čipova u mnogim testovima performansi.
    • Dodana podrška za ARM ploče, SoC-ove i uređaje: 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 podrška za zaslonske ploče 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 .116, B04.1XAT101, BOE TV2WUM -LL140, BOE NV41WUM-N133, BOE NV63WUM-N116, BOE NV4WHM-A140D, BOE NE6WUM-N116G, CMN N2BCA-EA116, CMN N2BCP-EA601, CSW MNB1LS4-88577, Starry erXNUMX.
    • Audio podsustav je dodao podršku za čipove i kodeke RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825. Stari upravljački programi za zvuk za Intel ASoC proglašeni su zastarjelima, pa se umjesto njih preporučuje korištenje AVS upravljačkih programa. U upravljačkom programu SoundWire napravljena su mnoga poboljšanja.

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster