Vydanie jadra Linux 6.12 s podporou Realtime režimu

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie jadra Linux 6.12. Medzi najvýraznejšími zmenami sú: možnosť zapnutia reálneho režimu, sched_ext pre vytváranie plánovačov CPU cez eBPF, výstup QR kódu pri havarijných stavoch, mechanizmus Device Memory TCP, mechanizmus rezervovania zdrojov SCHED_DEADLINE server, vylepšenie plánovača úloh EEVDF, modul IPE na nastavenie politík zabezpečenia integrity.

Do novej verzie bolo prijatých 14 607 opráv od 2 167 vývojárov, veľkosť opravy je 37 MB (zmeny sa dotkli 13 087 súborov, bolo pridaných 507 913 riadkov kódu, odstránených 234 083 riadkov). V minulom vydaní bolo 15 130 opráv od 2 078 vývojárov, veľkosť opravy bola 85 MB (v jadre 6.10 mala oprava veľkosť 41 MB). Približne 45 % všetkých zmien v 6.12 súvisí s ovládačmi zariadení, asi 12 % zmien súvisí s aktualizáciou kódu špecifického pre hardvérové architektúry, 13 % s sieťovým zásobníkom, 6 % s файловými системами a 3 % s vnútornými subsystémami jadra.

Hlavné novinky v jadre 6.12:

  • Pamäť a systémové služby
    • Bola poskytnutá možnosť zostavenia jadra s voľbou PREEMPT_RT bez dodatočných patchov na prácu v reálnom čase. Poslednou chýbajúcou možnosťou v jadre, ktorá bránila aktivácii režimu PREEMPT_RT, bola podpora nezamieňajúceho atómového výstupu cez funkciu printk, ktorá bola takisto prijatá do jadra. Podpora PREEMPT_RT je dostupná pre architektúry x86, x86_64, ARM64 a RISC-V. Doteraz bola implementácia režimu PREEMPT_RT dodávaná vo forme externých patchov, na základe ktorých niektoré distribúcie, ako RHEL, SUSE a Ubuntu, vytvorili samostatné Realtime edície svojich produktov, žiadané v oblastiach ako finančné systémy, zariadenia na spracovanie zvuku a videa, letectvo, medicína, robotika, telekomunikačné a priemyselné systémy, kde je potrebné zabezpečiť predvídateľný čas spracovania udalostí.
    • Bol pridaný mechanizmus «sched_ext» (SCX), ktorý umožňuje používať eBPF na vytváranie plánovačov CPU, pokrývajúcich prakticky všetky aspekty plánovania vykonávania úloh a rozdelenia zdrojov CPU. Takéto plánovače môžu byť dynamicky načítané a vykonávané v jadre Linux. virtuálnom stroji eBPF. Mechanizmus sched_ext uľahčuje vytváranie plánovačov špecifických pre určité úlohy, umožňuje experimentovať s rôznymi technikami a stratégiami plánovania a tiež umožňuje rýchlo vytvárať pracovné prototypy a nahrádzať plánovače za behu v pracovných infraštruktúrach. Napríklad pomocou sched_ext je možné vytvoriť plánovač, ktorý zohľadňuje špecifiká určitej aplikácie a dynamicky mení stratégiu plánovania jej vykonávania v závislosti od stavu systému a niektorých ďalších faktorov.
    • Súčasťou je zostávajúca časť patchov potrebných na fungovanie mechanizmu SCHED_DEADLINE server, ktorý rieši problém s nedostatkom CPU prostriedkov pre bežné úlohy v podmienkach monopolizácie CPU vysoko priorizovanými (realtime) úlohami. Na zabránenie monopolizácii CPU sa v jazdách predtým používal mechanizmus Realtime throttling, ktorý sa snažil rezervovať 5% pre nízkoprí prioritné úlohy, pričom 95% času zostalo realtime-úlohám. Tento mechanizmus zostal za očakávaniami, pretože bežné úlohy v mnohých situáciách nedostávali procesorový čas. SCHED_DEADLINE server implementuje efektívnejší mechanizmus rezervácie zdrojov.
    • Dokončila sa integrácia plánovača úloh EEVDF (Earliest Eligible Virtual Deadline First), ktorý nahradil plánovač CFS (Completely Fair Scheduler), dodávaný od jadra 2.6.23. Nový plánovač pri výbere nasledujúceho procesu na vykonanie zohľadňuje procesy, ktoré nedostali dostatok procesorových zdrojov alebo dostali nezaslúžene veľa procesorového času. V prvom prípade sa núti odovzdanie výkonu procesu, zatiaľ čo v druhom prípade sa naopak odkladá. Starý plánovač CFS používal heuristiky a jemné nastavenia na identifikáciu procesov, ktoré vyžadovali osobitnú pozornosť, zatiaľ čo nový plánovač ich sleduje explicitnejšie a nevyžaduje jemné nastavenia. Predpokladá sa, že EEVDF umožní znížiť oneskorenia pri vykonávaní úloh, s ktorými mal CFS problémy pri plánovaní.
    • Do núdzového správcovského systému v jadre – DRM Panic, ktorý využíva subsystém DRM (Direct Rendering Manager) na zobrazenie názorného reportu v štýle „modrej obrazovky smrti“, bola pridaná možnosť zobrazenia loga a QR kódu s kmsg reportom pri výskyte núdzového stavu. Keďže do QR kódu sa zmestí iba 2953 bajtov, je dostupná možnosť DRM_PANIC_SCREEN_QR_CODE_URL, pri ktorej je kmsg report komprimovaný pomocou zlib a pripojený ako parameter k URL, čo umožňuje prenos približne 7500 bajtov cez QR kód V40. Pri zostavovaní balíkov s jadrom môžu distribúcie zadať základný odkaz pre URL, čo umožňuje vytvoriť prepojenie na stránku na odoslanie správy o probléme. Pre výber formátu QR kódu je k dispozícii nastavenie DRM_PANIC_SCREEN_QR_VERSION.
    • Pridaná podpora rozšírenia ARM POE (Permission Overlay Extension), ktoré umožňuje určiť prístupové práva k oblastiam pamäte. Pomocou tohto rozšírenia môžu byť na systémoch s procesormi ARM64 implementované Mechanizmy Memory Protection Keys, ktoré obmedzujú prístup k pamäťovým stránkam bez zmeny tabuľky stránok pamäte.
    • Pre architektúry Loongarch, ARM64, PowerPC a s390 bola prenesená implementácia systémového volania getrandom(), optimalizovaná pomocou mechanizmu vDSO (virtual dynamic shared object), ktorý umožňuje preniesť obsluhu systémového volania z jadra do užívateľského priestoru a vyhnúť sa prepínaniu kontextu. Optimalizácia umožňuje zrýchliť získavanie náhodných čísel až 15-násobne.
    • Do subsystému asynchrónneho vstupu/výstupu io_uring bola pridaná možnosť používania absolútnych časových limitov, ktoré sa aktivujú pri dosiahnutí určitého času na systémových hodinách (predtým mohli byť nastavené iba relatívne časové limity, pri ktorých bola uvedená dĺžka od začiatku operácie).
    • Boli pridané súbory na generovanie bindingov pre knižnicu libcpupower pomocou nástroja SWIG, ktorý umožňuje vytvárať bindingy z kódu v C/C++ pre rôzne programovacie jazyky. Bindingy umožňujú vytvárať skripty v Pythone a iných jazykoch a používať ich na rozšírenie funkčnosti knižnice libcpupower, ktorá poskytuje API na správu cpufreq a ovládačov z užívateľského priestoru.
    • V nástroji cpuidle bola implementovaná funkcia na zobrazenie hodnoty stavu nečinnosti "residency", ktorá sa používa v realtime systémoch a zohľadňuje minimálny čas, ktorý musí procesor stráviť v nečinnosti, aby sa ospravedlnili náklady na energiu spojené s prechodom do tohto stavu a späť.
    • Bola pridaná možnosť používať kompilátor Clang na zostavovanie štandardnej C knižnice nolibc, ktorá je súčasťou zdrojových textov jadra Linuxu a poskytuje obálku nad základnými systémovými volaniami. Pri zostavovaní nolibc v Clang je povolené použitie optimalizácie počas prepojenia (LTO).
    • Niektoré rozhrania cgroup1, ako je účtovanie TCP, prvá verzia mäkkých limitov (soft limit) a riadenie vyčerpania voľnej pamäte, boli vyhlásené za zastarané. Podpora uvedených funkcií zatiaľ zostáva plne zachovaná a varovanie bolo vyhlásené za účelom zistenia počtu používateľov, ktorí naďalej využívajú tieto možnosti.
    • Bola pridaná možnosť nastaviť kruhový vyrovnávací pamäťový buffer pre uchovávanie nahromadených dát po reštarte, čo umožní nestratiť zhromaždené ladící informácie v prípade havarijného ukončenia jadra. Dátum sa uchováva v pamäti. Aktivácia sa realizuje cez príkazový parameter jadra trace_instance, napríklad nastavením "trace_instance=boot_map@0x285400000:12M" sa rezervuje 12 MB pamäte na adrese 0x285400000 pre buffer "boot_map", ktorý bude dostupný cez súbor /sys/kernel/tracing/instances/boot_map.
    • Pokračoval prenos zmien z vetvy Rust-for-Linux, ktoré sa týkajú použitia jazyka Rust ako druhého jazyka pre vývoj ovládačov a modulov jadra (podpora Rust nie je predvolene aktivovaná a nezahŕňa Rust medzi povinné závislosti pri kompilácii jadra). Pridané moduly 'list' a 'rbtree' pre prácu s obojsmernými prepojenými zoznamami a červeno-čiernymi vyhľadávacími stromami. Rozšírené schopnosti modulov 'init', 'sync', 'types' a 'error'. Poskytla sa možnosť použitia kódu v jazyku Rust pri kompilácii jadra s ochranou proti útokom Spectre (možnosti MITIGATION_{RETHUNK, RETPOLINE, SLS}), používanie debuggovacieho systému KASAN, mechanizmov ochrany kCFI (kernel Control Flow Integrity) a Shadow Call, ako aj pri použití dodatočných pluginov GCC. Pridaný ovládač pre Ethernetový kontrolér Applied Micro QT2025 PHY, napísaný v jazyku Rust. Pripravená samostatná stránka s dokumentáciou — rust.docs.kernel.org.
    • Do zdrojových textov jadra bola pridaná utilita xdrgen na transformáciu XDR špecifikácií (eXternal Data Representation) na funkcie kódovania a dekódovania XDR, napísané v štýle C, aký sa používa v jadre Linux.
    • Do jadra bolo prijaté zmenenie s implementáciou mechanizmu maskovania ukazovateľov na zníženie počtu pomalých volaní barrier_nospec() v 64-bitovej funkcii copy_from_user(), ktorá sa používa na kopírovanie dát do jadra z priestoru používateľa. Použitie maskovania urýchlilo o 2.6% prechod testu 'per_thread_ops', ktorý hodnotí počet operácií, ktoré môžu byť vykonané v jednom vlákne.
    • Pridaný nový USB ovládač, ktorý umožňuje používanie protokolu 9pfs ako transportu na prenos a príjem dát z USB zariadenia, pri montovaní FS 9p na USB (napríklad 'mount -t 9p -o trans=usbg,aname=/path/to/fs /mnt/9'). Ako príklad použitia nového ovládača sa uvádza nahradenie NFS na organizovanie načítania koreňového oddielu pri vývoji vstavaných zariadení.
  • Diskový subsystém, I/O a súborové systémy
    • Do podsysytému VFS bola pridaná možnosť práce s úložnými zariadeniami, pričom veľkosť blokov je väčšia ako veľkosť pamäťovej stránky v systéme. V súborových systémoch je táto možnosť zatiaľ podporovaná iba v XFS.
    • Do subsystéme FUSE, ktoré umožňuje vytváranie implementácií súborových systémov fungujúcich v používateľskom priestore, bola pridaná podpora mapovania identifikátorov používateľov pripojených súborových systémov, používaná na priradenie súborov určitého používateľa na pripojenej cudzom oddiele s inému používateľovi v aktuálnom systéme.
    • Bola implementovaná nová operácia fcntl F_CREATED_QUERY, ktorá umožňuje aplikácii určiť, či bol súbor vytvorený pri otvorení s voliteľným flagom O_CREAT, alebo či už existoval predtým.
    • Do systémového volania name_to_handle_at() bola pridaná možnosť používania jedinečných 64-bitových identifikátorov bodov pripojenia na vylúčenie pretekajúceho stavu pri analýze /proc/mountinfo.
    • Veľkosť štruktúry "file" v jadre bola skrátená z 232 na 184 bajtov, čo umožňuje znížiť spotrebu pamäte na systémoch, ktoré aktívne pracujú so súbormi.
    • Bola zakázaná montáž súborových systémov na body pripojenia v hierarchii /proc, napríklad v /proc/PID/fd, čo by mohlo vytvárať potenciálne bezpečnostné problémy.
    • V pseudo-FS NSFS (NameSpace FS), používanom na prácu s priestormi mien, bola implementovaná poskytovanie dodatočných informácií o priestoroch mien bodov pripojenia.
    • V súborovom systéme EROFS (Extendable Read-Only File System), určenom na použitie na oddieloch prístupných v režime iba na čítanie, sa objavila podpora montáže súborových systémov priamo z diskových obrazov, uložených vo forme súborov.
    • Do XFS boli pridané nové ioctl príkazy XFS_IOC_START_COMMIT a XFS_IOC_COMMIT_RANGE na výmenu obsahu medzi dvoma súbormi.
    • V NFS bola pridaná podpora protokolu "LOCALIO", ktorý umožňuje určiť, či sa klient a server NFS nachádzajú na rovnakom hostiteľovi, aby sa aktivovali príslušné optimalizácie.
    • V súborovom systéme Btrfs boli navrhnuté optimalizácie výkonu, došlo k refaktoringu kódu, skrátená oblasť zamykania extents pri operáciách čítania, pokročilo sa v práci na prechode na používanie stránkových foliantov pamäte (page folios), implementovalo sa automatické uvoľňovanie pamäte pre štruktúru btrfs_path.
    • V súborovom systéme Ext4 boli odstránené chyby súvisiace s alokáciou blokov, správou extentov, mechanizmom "fast commit" a žurnalizáciou.
  • Virtualizácia a bezpečnosť
    • Bol pridaný LSM modul IPE (Integrity Policy Enforcement), vyvinutý spoločnosťou Microsoft na rozšírenie existujúceho systému mandátneho sprístupnenia. Modul umožňuje definovať celkovú politiku zabezpečenia integrity pre celý systém, ktorá určuje, aké operácie sú povolené a akým spôsobom by sa mali overovať pravosť komponentov. Napríklad, pomocou IPE je možné určiť, ktoré spustiteľné súbory je povolené spustiť pri zohľadnení overenia ich zodpovednosti referenčnej verzii pomocou kryptografických hashov poskytovaných systémom dm-verity.
    • Na etape kompilácie jadra je poskytnutá možnosť samostatného zapínania dostupných metód ochrany proti rôznym zraniteľnostiam triedy Spectre v CPU. V Kconfig sú navrhnuté nové parametre: MITIGATE_MDS (ochrana proti zraniteľnosti Microarchitectural Data Sampling), MITIGATE_TAA (ochrana proti zraniteľnosti TSX Asynchronous Abort), MITIGATE_MMIO_STALE_DATA (ochrana proti zraniteľnosti MMIO Stale Data), MITIGATE_L1TF (ochrana proti zraniteľnosti L1 Terminal Fault), MITIGATE_RETBLEED (ochrana proti zraniteľnosti Retbleed), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V2 (ochrana proti zraniteľnostiam Spectre), MITIGATE_SRBDS (ochrana proti zraniteľnosti Special Register Buffer Data Sampling), MITIGATE_SSB (ochrana proti zraniteľnosti Speculative Store Bypass).
    • Bol pridaný parameter príkazového riadku proc_mem.force_override a súbor nastavení zostavenia v Kconfig (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE a PROC_MEM_FORCE_NEVER), ktoré umožňujú zakázať zmeny pamäte cez /proc/pid/mem.
    • Pod systém LSM (Linux security module) prešiel na používanie statických volaní, čo umožnilo posilniť bezpečnosť a zvýšiť výkon.
    • Bol zabezpečený možnosť používať natívne jadrá pre architektúru ARM64 v hosťovských prostrediach bežiacich na androidových systémoch s modifikovaným hypervízorom KVM (protected KVM).
    • V LSM module Landlock, ktorý umožňuje obmedziť interakciu skupiny procesov s vonkajším prostredím, bola implementovaná koncepcia «IPC scoping» na selektívne obmedzenie interakcie s sandboxovými prostrediami, využívajúc Unixové sokety a signály. Napríklad, je možné zakázať nadviazanie spojenia s používaním Unixových soketov zo sandboxového prostredia k procesom, v ktorých sa neuplatňuje izolácia, ale povoliť spojenia s procesmi v tej istej scope-oblasti.
    • Vo hypervízore KVM v CPUID pre hosťovské systémy bol pridaný flag, ktorý signalizuje o podpore rozšírení AVX10.1.
  • Sieťový subsystém
    • Bol zavedený mechanizmus Device Memory TCP, ktorý umožňuje používať sieťové sokety na priame odosielanie obsahu pamäte periférnych zariadení po sieti (režim zero-copy) a priame umiestnenie obsahu sieťových paketov do pamäte zariadenia na strane príjemcu. Prenášané v paketochn dáta sú dodávané zo sieťovej karty do pamäte periférneho zariadenia alebo z pamäte zariadenia do sieťovej karty priamo, obchádzajúc CPU, a hlavičky paketov sa ukladajú do bežných vyrovnávacích pamätí jadra.
    • Boli rozšírené možnosti mnohých Ethernetových a bezdrôtových ovládačov. Napríklad, v ovládači Intel iwlwifi bola pridaná podpora presunu operácií RLC/SMPS na stranu firmvéru, v ovládači RealTek rtw89 bola zvýšená výkonnosť a pridaná podpora čipov RTL8852BT/8852BE-VT (WiFi 6), v ethernetovom ovládači microchip bola pridaná podpora špecifikácií IEEE 802.3bw (100BASE-T1) a IEEE 802.3bp, vylepšené implementácie virtuálnych Ethernetov Microsoft vNIC a IBM veth. Boli pridané nové ovládače pre Ethernetové čipy Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 a Microchip LAN8650/1 10BASE-T1S MAC-PHY.
    • V MPTCP (MultiPath TCP), rozšírení protokolu TCP pre organizáciu doručovania TCP-paketov súčasne cez viacero trás cez rôzne sieťové rozhrania, bol zvýšený rozsah používaných pri smerovaní váhových koeficientov z 8 na 16 bitov. Bolo realizované určenie strácajúceho sa (blackhole) trafiku a pozastavenie pokusov o nadviazanie spojení so systémami, ktoré vedú k strate trafiku na určitý čas.
    • Pre IPv6 bola implementovaná podpora flagu „p“ v PIO (Prefix Information Option), používaného v oznámeniach RA (IPv6 Router Advertisements) na výber modelu nasadenia klientov cez DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) namiesto pridelenia jednotlivých adries na základe prefixov pomocou SLAAC (Stateless Address Autoconfiguration). V IPv6 IOAM6 bola pridaná podpora nového režimu enkapsulácie tunsrc, umožňujúceho dosiahnuť vyšší výkon.
    • Zvýšený výkon spracovania riadiacich paketov IPsec.
    • Zvýšený výkon vyprázdnenia (flush) veľkých súborov pravidiel nftables. V nfnetlink_queue bola vylepšená podpora protokolu SCTP.
    • V API ethtool bola pridaná podpora viazania niekoľkých sieťových kariet na jedno sieťové rozhranie.
  • Zariadenie
    • V ovládači AMDGPU bola pokračovaná práca na implementácii podpory GPU AMD RDNA4 („GFX12“). Bola pridaná možnosť vyprázdniť jednotlivé fronty úloh bez vyprázdnenia stavu celého GPU.
    • Pokračuje práca na ovládači drm (Direct Rendering Manager) Xe pre GPU na báze architektúry Intel Xe, ktorý sa používa vo grafických kartách Intel rodiny Arc a integrované grafike, počnúc procesormi Tiger Lake. V novej verzii je zahrnutá podpora GPU na báze mikroarchitektúr Battlemage a Lunar Lake. Predstavená je podpora CCS-modifikátorov (Color Control Surface) Xe2 na ovládanie parametrov integrovaných a diskrétnych GPU.
    • V ovládači i915 bola implementovaná možnosť výstupu cez rozhranie HWMON alebo sysfs (atribút „fan1_input“) informácií o rýchlosti otáčania ventilátora. Parametr „i915.modeset“ bol vyhlásený za zastaraný, namiesto „i915.modeset=0“ by sa mal používať parameter „i915.nomodeset“.
    • V DRM-ovládači msm (GPU Qualcomm Adreno) bola pridaná podpora GPU A615, A306 a A621.
    • V ovládači Nouveau bola prepracovaná a vyčistená vnútorná štruktúra.
    • V ovládači intel_pstate, ktorý riadi parametre energetickej spotreby (P-state) na systémoch s procesormi Intel, bola pridaná podpora hybridných systémov s asymetrickými (líšiacimi sa charakteristikami) CPU, ako aj podpora riadenia napájania procesorov na báze mikroarchitektúr Granite Rapids a Sierra Forest. V ovládači intel_idle bola pridaná podpora CPU Xeon Granite Rapids. V ovládači intel_rapl bolo zabezpečené rozpoznanie procesov AMD rodiny 1Ah a procesorov Intel ArrowLake-U.
    • Pokračuje zahrnutie zmien na podporu ARM SoC Snapdragon X Elite, ktorý používa vlastný 12-jadrový CPU Qualcomm Oryon a GPU Qualcomm Adreno. Čip je zameraný na použitie v notebookoch a PC a v mnohých výkonnostných testoch prekonáva čipy Apple M3 a Intel Core Ultra 155H.
    • Pridaná podpora platforiem ARM, SoC a zariadení: 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.
    • Pridaná podpora displejových panelov 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 zvukovom systéme bola pridaná podpora pre čipy a kodeky RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825. Staré zvukové ovládače pre ASoC Intel boli vyhlásené za zastarané, namiesto ktorých sa odporúča používať ovládače AVS. Do ovládača SoundWire bolo zavedených mnoho vylepšení.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster