Po dvoch mesiacoch vývoja Linus Torvalds predstavil uvoľnenie jadra Linux 6.14. Medzi najvýraznejšie zmeny patrí: ovládač ntsync s primitívami synchronizácie Windows NT, nastavenie vyváženia operácií čítania v Btrfs RAID1, podpora reflink v XFS v reálnom čase, možnosť nekonzumovateľného vyrovnávacieho vstupu/výstupu, dmem cgroup na obmedzenie pamäte GPU, využitie io_uring v FUSE, delegovanie atribútov v NFS, podpora atomárneho zápisu v Device mapper, urýchlenie symbolických odkazov, správa možnosti vykonávania skriptov, podpora čipov Qualcomm Snapdragon 8 Elite, ovládač pre NPU AMD.
Do novej verzie bolo prijatých 12115 opráv od 1984 vývojárov, veľkosť patchu je 39 MB (zmeny sa týkajú 10170 súborov, pridalo sa 531586 riadkov kódu, odstránilo sa 235999 riadkov). V predchádzajúcej verzii bolo 14172 opráv od 2086 vývojárov, veľkosť patchu bola 46 MB. Približne 41% všetkých zmien predstavených v 6.14 súvisí s ovládačmi zariadení, približne 13% zmien má súvis s aktualizáciou kódu špecifického pre hardvérové architektúry, 14% súvisí so sieťovým zásobníkom, 7% s súborovými systémami a 4% s vnútornými subsystémami jadra.
Hlavné novinky v jadre 6.14:
- Diskový subsystém, I/O a súborové systémy
- Vo súborovom systéme Btrfs sa objavila podpora nových metód vyváženia operácií čítania medzi úložiskami v RAID1 pole. Okrem predchádzajúceho rozdelenia záťaže na základe identifikátorov procesov (pid) sa v novej verzii ponúkajú tri nové režimy vyváženia: „rotation“ (rovnomerné rozdelenie záťaže medzi všetkými úložiskami, režim je predvolene zapnutý); „latency“ (rozdelenie s ohľadom na latencie, môže byť užitočné pri zlyhaniach alebo nestabilnej práci úložísk); devid (ručné ovládanie). Na zmenu režimu vyváženia bol pridaný rozhranie „/sys/fs/btrfs//read_policy“. Medzi ďalšími zmenami v Btrfs je implementácia ioctl FS_IOC_READ_VERITY_METADATA.
- Bol pridaný režim necacheovateľného vyrovnávacieho vstupu/výstupu, pri ktorom sa údaje odstraňujú zo stránkového cache hneď po dokončení operácií ich čítania alebo zápisu. Táto zmena môže byť užitočná pri použití veľmi rýchlych úložných zariadení, kde je cacheovanie operácií v pamäti nadbytočné. Pre takéto zariadenia nový režim umožňuje eliminovať nadmerné využívanie pamäte stránkovým cache bez nutnosti použitia zložitých API pre priamy vstup/výstup (Direct I/O).
- Do fsnotify, mechanizmu sledovania zmien v FS, bolo pridané nové podujatie FS_PRE_ACCESS generované v štádiu pred prístupom k obsahu súboru. Podujatie sa spracováva v synchronnom režime, t. j. jadro odosiela podujatie a čaká na odpoveď. Ak je odpoveď prijatá, operácia sa vykoná, a ak dôjde k zlyhaniu, systémový volanie vracia do priestoru používateľa kód chyby. Pomocou FS_PRE_ACCESS môže proces v priestore používateľa, napríklad, organizovať vyplnenie súboru podľa pripravenosti údajov v pomalom úložisku.
- Do subsystému FUSE, ktorý umožňuje vytváranie implementácií súborových systémov v priestore používateľa, bola pridaná podpora výmeny údajov medzi jadrom a spracovateľom v priestore používateľa pomocou mechanizmu vstupu/výstupu io_uring. Zmena umožňuje zvýšiť výkon FUSE redukciou prepínaní kontextu medzi jadrom a priestorom používateľa.
- Do súborového systému XFS bola pridaná možnosť použitia spätného mapovania (rmap, reverse-mapping) v režime práce s predvídateľnými oneskoreniami ("realtime device"). Spätné mapovanie umožňuje určiť, pre ktorý súbor je daný blok na úložnom zariadení využívaný. Pomocou rmap v XFS pre realtime-režim bola implementovaná podpora operácie reflink, ktorá umožňuje vytvárať kópie súborov klonovaním metadát súboru a vytvorením odkazu na už existujúce údaje bez ich skutočného kopírovania.
- Vo VFS bolo implementované cacheovanie veľkosti symbolických odkazov, ktoré umožnilo zrýchliť vykonávanie operácie readlink o 1,5 % (v teste s /initrd.img v ext4). Cacheovanie je zapnuté vo FS ext4 a tmpfs.
- Do implementácie NFSv4.2 bola pridaná podpora delegovania atribútov súborov, ktorá umožňuje spravovať takéto atribúty súborov, ako je čas zmien (mtime), na strane NFS-klienta, bez nutnosti resetovať zmeny na serveri. V NFS bola taktiež vylepšená podpora protokolu „LOCALIO“, ktorý umožňuje určiť, či sú klient a server NFS na tom istom hoste, aby sa aktivovali príslušné optimalizácie, ako je použitie priamych vstupov/výstupov (Direct I/O) klientom.
- Zvýšený výkon čítania operácií vo súborových systémoch NETFS, CIFS a AFS (Andrew File System).
- Do Squashfs bol zahrnutý režim priameho nahrávania blokov do stránkového cache (SQUASHFS_FILE_DIRECT), ktorý umožňuje obísť potrebu samostatnej cache read_page. Zmena výrazne znížila veľkosť pamäte spotrebovanej pri prevádzke Squashfs.
- Vo systémovom volaní statx() bol implementovaný flag STATX_DIO_READ_ALIGN na určenie požadovanej zarovnávania pre operácie čítania zo súboru.
- Vo súborovom systéme Bcachefs bol aktualizovaný a stabilizovaný formát diskových štruktúr. Akékoľvek ďalšie zmeny formátu budú považované za voliteľné a budú realizované vo forme voliteľných doplnkov. Výrazne bola zvýšená rýchlosť kontroly integrity FS. Okrem toho bola v Bcachefs vylepšená funkčnosť v režime len na čítanie; odstránili sa problémy vedúce k prístupu do pamäte po jej uvoľnení (use after free); boli vyriešené problémy s reflink-ukazovateľmi vo fsck; opravená sa správa reštartovania transakcie.
- Bol vrátený modul md-linear určený na zlúčenie blokových zariadení. Tento modul bol predtým vyhlásený za zastaraný a odstránený z jadra 6.8, ale ukázalo sa, že bol potrebný, a preto bol teraz obnovený.
- Súborové systémy F2FS a SQUASHFS boli prevedené na používanie zväzkov stránok pamäte (page folios).
- Súborové systémy OCFS2 a DLMFS boli prevedené na používanie nového API pre montovanie diskových oddielov.
- Vo vodiči null_blk bol implementovaný atribút „rotational“, ktorý sa nastavuje cez configfs a umožňuje simulovať prácu so zariadením založeným na otáčajúcich sa diskoch, aby sa zjednodušilo testovanie funkcií jadra.
- V systéme Device mapper a v moduloch dm-mirror, dm-io, dm-table, dm-linear, dm-stripe a dm-raid1 bola implementovaná podpora atomárneho zápisu.
- Pamäť a systémové služby
- Skončila integrácia do jadra ovládača ntsync, realizujúceho symbolické zariadenie /dev/ntsync a sadu primitív pre synchronizáciu používaných v jadre Windows NT. Implementácia takýchto primitív na úrovni jadra umožňuje významne zvýšiť výkon hier Windows spúšťaných prostredníctvom Wine. Zlepšenie výkonu sa dosahuje vďaka zbaveniu sa režijných nákladov spojených s používaním RPC v priestore používateľa. Vytvorenie samostatného ovládača pre jadro Linux je vysvetlené problémovosťou správneho implementovania API synchronizácie NT nad existujúcimi primitívmi v jadre.
- Pridaný nový ovládač cgroup DMEM na samostatné sledovanie oblastí pamäte zariadení, ako sú GPU. DMEM umožňuje vytvárať samostatné cgroup pre rôzne úlohy pracujúce s GPU, aby mohli prebiehať bez vzájomného ovplyvňovania. Nová funkcia rieši problém s núteným ukončením operácií s GPU pri vyčerpaní dostupnej pamäte, vďaka sledovaniu reflektovanej pamäte GPU a pamäte používané ovládačmi CPU v samostatných cgroup.
- Boli vykonané optimalizácie pre škálovanie operácie vyprázdnenia (flush) cache TLB (Translation Lookaside Buffer), používaného na zrýchlenie konverzie virtuálnych adries na fyzické adresy. Pridané optimalizácie spočívajú vo oneskorenom aktualizovaní niektorých štruktúr údajov počas prepínania kontextov, čo umožňuje zvýšiť výkon pri prechode niektorými testami.
- Zvýšený výkon mechanizmu MGLRU (Multi-Generational LRU), používaného na určenie, ktoré stránky pamäte sú používané a ktoré je možné presunúť do oddielu výmeny.
- Pokračoval prenos zmien z vetvy Rust-for-Linux, súvisiacich s používaním jazyka Rust ako druhého jazyka pre vývoj ovládačov a modulov jadra (podpora Rust nie je predvolene aktívna a nevedie k zaradeniu Rust medzi povinné zostavovacie závislosti jadra). Poskytla sa možnosť používania v kóde jadra makra „derive(CoercePointee)“, ktoré umožňuje používať inteligentné ukazovatele s trait-objektami. Do jadra boli zahrnuté Rust-vrstvy pre PCI, platformy, Open Firmware, symbolické zariadenia a niektoré funkcie vstupu/výstupu. Greg Kroah-Hartman, zodpovedný za podporu stabilnej vetvy jadra Linux, charakterizoval súčasný stav ako „takmer pripravenosť na napísanie skutočného ovládača v Ruste“.
- V zostavovacích scenároch bol navrhnutý nový kód na generovanie verzií ladacích symbolov pre načítateľné moduly, ktorý teraz používa informácie z ladacích záznamov vo formáte DWARF, namiesto priameho parsovania zdrojového kódu. Zmena umožňuje aplikovať verziovanie ladacích symbolov pre moduly napísané v jazyku Rust. Staršia implementácia je v jadre stále ponechaná a výber generátora sa vykonáva na úrovni zostavovacích možností.
- Pre architektúru PowerPC bola implementovaná podpora režimu lenivého vytláčania úloh (PREEMPT_LAZY, lazy preemption), ktorý zodpovedá režimu plného vytláčania („full preemption“) pre realtime-úlohy (RR/FIFO/DEADLINE), ale zdržuje vytláčanie bežných úloh (SCHED_NORMAL) až do hranice tikovania.
- Do subsystému profilovania výkonu „perf“ bola pridaná podpora čítačov energetickej spotreby procesorov AMD. Pridaná možnosť práce na systémoch, ktoré obsahujú až 2048 jadier CPU.
- Bola poskytnutá možnosť používania parametra sysctl pid_max s priestormi mien identifikátorov procesov (ID namespace). Parameter pid_max je určený na obmedzenie maximálnej hodnoty identifikátorov procesov (PID) a teraz sa môže používať na obmedzenie maximálneho možného počtu procesov spustených v určenom priestore mien. Spracovanie parametra sa vykonáva hierarchicky, t.j. obmedzenia v vonkajších priestoroch mien sa rozširujú na vnorené priestory mien.
- Pri spúšťaní procesu systémového volania execveat sa v súborovom systéme /proc teraz zobrazí názov spusteného súboru, nie číslo súborového deskripátora.
- Do zdrojového kódu jadra (v adresári samples/vfs) bola pridaná utilita mountinfo, demonštrujúca použitie systémových volaní statmount() a listmount().
- V subsystéme BPF boli navrhnuté nové funkcie bpf_local_irq_save() a bpf_local_irq_restore() na dočasné vypnutie prerušenia na lokálnom CPU. Tieto funkcie môžu byť použité na implementáciu štruktúr, ktorých spracovanie nie je prerušené.
- V systémovom volaní madvise() pri použití vlajok MADV_DONTNEED a MADV_FREE bolo zabezpečené uvoľnenie tabuliek strán pamäte spojených s uvoľneným rozsahom adries, keďže v niektorých situáciách môžu prázdne stránky pamäte zaberať pomerne veľa miesta.
- Pre architektúru OpenRISC bola implementovaná podpora mechanizmu reštartovateľných sekvencií (rseq, restartable sequences), určeného na rýchle atómové vykonávanie operácií, ktoré sa v prípade prerušenia iným vláknom vymažú a pokusy o vykonanie sa opakujú.
- Bol vykonaný reorganizácia kódu s implementáciou algoritmov CRC32 a CRC-T10DIF, ktorý sa už viac neprekryje s subsystémom crypto a je vyvolávaný priamo z knižničného rozhrania. Táto zmena umožnila zjednodušiť kód a zvýšiť jeho efektivitu.
- Do systému asynchrónneho vstupu/výstupu io_uring bol pridaný rozhranie na prenos ďalších metadát o integrite pri vykonávaní operácií čítania a zápisu.
- Virtualizácia a bezpečnosť
- Do systémového volania execveat bol pridaný príznak AT_EXECVE_CHECK, ktorý umožňuje overenie oprávnenosti vykonania súboru bez jeho skutočného spustenia, ale s ohľadom na bezpečnostné politiky, prístupové práva a aktívne moduly LSM. Na použitie v kombinácii s AT_EXECVE_CHECK sú navrhnuté securebit-príznaky SECBIT_EXEC_RESTRICT_FILE a SECBIT_EXEC_DENY_INTERACTIVE, ktoré môžu byť použité na obmedzenie vykonávania súborov so skriptami v interpretačných programovacích jazykoch. Príznak SECBIT_EXEC_RESTRICT_FILE predpisuje linkerom a interpreterom použiť voľbu AT_EXECVE_CHECK na overenie oprávnenosti vykonania, zatiaľ čo príznak SECBIT_EXEC_DENY_INTERACTIVE zakazuje spracovanie interaktívnych príkazov. Hlavná myšlienka zmeny spočíva v možnosti aplikácie bezpečnostných politík nielen na tradičné vykonateľné súbory, ale aj na textové súbory so skriptami, ktoré sa môžu načítať spustením interpretera (t.j. zákaz vykonania môže byť realizovaný nielen pri spustení './script.sh', ale aj pri vykonávaní vo forme 'sh script.sh').
- Na systémoch x86 bola implementovaná podpora chránených časovačov pre hostiteľské systémy, ktorá neumožňuje zmeniť systémové hodiny hostiteľského systému z prostredia hostiteľa. Možnosť bola realizovaná na základe mechanizmu AMD SEV (Secure Encrypted Virtualization), ktorý sa používa v virtualizačných systémoch na ochranu virtuálních strojů pred zásahom hypervízora alebo správcu hostiteľského systému.
- Do systému mandátnej kontroly prístupu SELinux bola pridaná podpora xperm-pravidiel, ktoré umožňujú viazať politiky SELinux na konkrétne volania ioctl() alebo správy netlink.
- Na zabezpečenie modulov jadra digitálnym podpisom je predvoleným algoritmom SHA512 namiesto SHA1.
- V ovládačoch pre hostiteľské systémy VirtualBox bola pridaná podpora architektúry ARM64.
- V hypervizoru KVM pokračovala práca na implementácii mechanizmu Intel TDX (Trusted Domain Extensions) na šifrovanie pamäte hostiteľských systémov.
- Do virtio_blk bola pridaná podpora režimu obnovy chýb.
- Sieťový subsystém
- V implementácii protokolu RxRPC bola pridaná možnosť použiť veľké pakety UDP na zvýšenie priepustnosti.
- Pre TCP bola pridaná podpora algoritmu RACK-TLP na určovanie straty paketov.
- Pridaný nový parameter sysctl tcp_tw_reuse_delay, platný v súvislosti s priestorom názvov (network namespace), ktorý umožňuje definovať oneskorenie pred tým, než systém môže opäť použiť číslo sieťového portu po uzavretí TCP soketu.
- Pridaná možnosť výberu poskytovateľa presného času (PTP) na vytváranie časových značiek na úrovniach PHY a MAC.
- Pre IPsec bola implementovaná podpora mechanizmu agregácie a fragmentácie zapuzdrených IP paketov — IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- Do systému sieťových soketov bola pridaná podpora prenášania informácií o prioritách (SO_PRIORITY) vo forme ovládacích správ (cmsg — control messages). Pre sieťové sokety bola pridaná možnosť SO_RCVPRIORITY, ktorá v rámci funkcie recvmsg() zahŕňa prenášanie informácií o priorite soketu.
- Zariadenie
- Bol pridaný ovládač amdxdna pre integrované NPU (Neural Processing Unit) akcelerátory CPU AMD založené na architektúre XDNA, určené na zrýchlenie operácií súvisiacich s strojovým učením. NPU na základe architektúry XDNA sa dodáva v sériách 7040 a 8040 procesorov AMD Ryzen, akcelerátoroch AMD Alveo V70 a SoC AMD Versal.
- Do ovládača i915 boli pridané identifikátory nových GPU, implementovaný bol spracovateľ chýb pri inicializácii HDMI a zvýšila sa spoľahlivosť opätovného spustenia GPU motorov na systémoch Haswell a starších.
- Pokračovalo sa v práci na drm-ovládači (Direct Rendering Manager) Xe pre GPU na báze architektúry Intel Xe, ktorá sa používa vo grafikách Intel série Arc a integrovaných grafikách od procesorov Tiger Lake.
- V ovládači Nouveau bola pridaná možnosť prenosu súborov s logmi GSP-RM cez debugfs.
- V ovládači AMDGPU bola implementovaná podpora mechanizmu DRM panic, ktorý zobrazuje niečo ako „modrá obrazovka smrti“ pri chybách. Pokračovalo sa v príprave na podporu budúcej série grafických kariet Radeon RX 9000 na architektúre RDNA4. Bola aktualizovaná podpora DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS a ISP.
- V DRM-ovládači msm (GPU Qualcomm Adreno) bola pridaná podpora platformy Qualcomm SM6150 (QCS615).
- V DRM-ovládači panfrost bola pridaná podpora SoC MediaTek MT8188 s GPU Mali-G57.
- V DRM-ovládači vc4 bola pridaná podpora SoC Broadcom BCM2712 (Raspberry Pi 5).
- V vfio-ovládači nvgrace-gpu bola pridaná podpora čipov NVIDIA Grace Blackwell 200.
- Súčasťou je ovládač pre ovládače Intel THC (Touch Host Controller), ktorý sa používa na interakciu s dotykovými obrazovkami a touchpadmi na niektorých prenosných počítačoch. Pridaná podpora zariadení Wacom s PCI rozhraním. Pridaná podpora herných ovládačov od spoločnosti QH Electronics.
- Pridaná podpora platforiem ARM, SoC a zariadení: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Pridaná podpora SoC SpacemiT K1 založeného na architektúre RISC-V.
- V zvukovej subsystéme ALSA pre MIDI 2.0 boli rozšírené API rawmidi a sequencer. V API pre delegovanie operácií kompresie na zvukovú kartu bola pridaná podpora ASRC (Asynchronous Sample Rate Conversion).
- Pridaná podpora zvukových systémov zariadení Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 a 18i20. Pridaná podpora bezdrôtových slúchadiel SteelSeries Arctis 9.
Zdroj: opennet.ru
