Linux 6.14

Linux 6.14

Po dvoch mesiacoch vývoja Linus Torvalds predstavil vydanie jadra Linux 6.14. Medzi najvýraznejšie zmeny patrí ovládač ntsync so synchronizačnými primitívami Windows NT, nastavenie vyvažovania čítacích operácií v Btrfs RAID1, podpora reflink v XFS v reálnom čase, možnosť nekartelového vyrovnaného vstupu/výstupu, dmem cgroup na obmedzenie pamäte GPU, používanie io_uring v FUSE, delegovanie atribútov v NFS, podpora atómovej zápisu v Device mapper, zrý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 zapracovaných 12115 opráv od 1984 vývojárov, veľkosť patchu je 39 MB (zmeny sa dotkli 10170 súborov, bolo pridaných 531586 riadkov kódu, odstránených 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 predložených zmien v 6.14 sa týka ovládačov zariadení, asi 13 % zmien má súvislosť s aktualizáciou kódu špecifického pre hardvérové architektúry, 14 % súvisí s sieťovým zásobníkom, 7 % – s súborovými systémami a 4 % s internými pod systémami jadra.

Hlavné novinky:

  • Diskový subsystém, I/O a súborové systémy
    • V súborovom systéme Btrfs sa objavila podpora nových metód vyvažovania čítacích operácií medzi úložiskami zapojenými do RAID1. Okrem predtým existujúceho rozdeľovania záťaže na základe identifikátorov procesov (pid) sa v novej verzii ponúkajú tri nové režimy vyvažovania: „rotation“ (rovnomerné rozdelenie záťaže medzi všetky úložiská, režim je predvolene zapnutý); „latency“ (rozdelenie s ohľadom na oneskorenia, môže byť užitočné pri poruchách alebo nestabilnej práci úložísk); devid (ručná kontrola). Na zmenu režimu vyvažovania bol pridaný rozhranie /sys/fs/btrfs//read_policy. Medzi ďalšie zmeny v Btrfs – implementácia ioctl FS_IOC_READ_VERITY_METADATA.
    • Pridané režim nekartelového vyrovnaného vstupu/výstupu, pri ktorom sa údaje odstraňujú zo stránkového cache ihned po dokončení operácií ich čítania alebo zápisu. Zmena môže byť užitočná pri používaní veľmi rýchlych úložných zariadení, pričom je caching operácií v operačnej pamäti nadbytočné. Pre takéto zariadenia nový režim umožňuje vylúčiť nadmernú spotrebu pamäte stránkovým cache bez použitia skompilovaného API priameho vstupu/výstupu (Direct I/O).
    • V fsnotify, mechanizmus sledovania zmien v FS, bolo pridané nová udalosť FS_PRE_ACCESS, generovaná v štádiu pred prístupom k obsahu súboru. Udalosť sa spracováva v synchronnom režime, t. j. jadro odošle udalosť a čaká na prijatie odpovede. Ak bola odpoveď prijatá – operácia sa vykoná, a ak dôjde k chybe – systémový volanie vráti do užívateľského priestoru kód chyby. Pomocou FS_PRE_ACCESS môže proces v užívateľskom priestore napríklad zorganizovať vyplnenie súboru, keď sú dáta pripravené v pomalom úložisku.
    • Do subsystému FUSE, ktorý umožňuje vytváranie implementácií súborových systémov v užívateľskom priestore, bola pridaná podpora výmenná komunikácia medzi jadrom a obsluhou v užívateľskom priestore s využitím mechanizmu vstupu/výstupu io_uring. Zmena umožňuje zvýšiť výkonnosť FUSE obmedzením prechodov kontextu medzi jadrom a užívateľským priestorom.
    • Do súborového systému XFS bola pridaná možnosť podpora spätnej 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 sa používa určený blok na úložnom zariadení. Pomocou rmap sa v XFS pre realtime režim implementovala podpora operácie reflink, ktorá umožňuje vytváranie kópií súborov klonovaním metadát súboru a vytvorením odkazu na už existujúce dáta bez ich skutočného kopírovania.
    • Vo VFS realizované cacheovanie veľkosti symbolických odkazov, čo umožnilo urýchliť vykonanie operácie readlink o 1,5 % (v teste s /initrd.img v ext4). Cacheovanie je zapnuté v FS ext4 a tmpfs.
    • Do implementácie NFSv4.2 bola pridaná podpora delegovania atribútov súborov, ktorá umožňuje spravovať také atribúty súborov, ako je čas zmeny (mtime), na strane NFS klienta, bez nutnosti zresetovania zmien na serveri. V NFS bola taktiež vylepšená podpora protokolu "LOCALIO", ktorý umožňuje určiť, či sa klient a server NFS nachádzajú na rovnakom hostiteľovi, aby sa využili príslušné optimalizácie, ako je použitie priameho vstupu/výstupu klientom (Direct I/O).
    • Zvýšená výkon operácií čítania v súborových systémoch NETFS, CIFS a AFS (Andrew File System).
    • Vo Squashfs je zapnutý režim priameho načítania blokov do stránkového vyrovnávacieho pamäťového systému (SQUASHFS_FILE_DIRECT), ktorý umožňuje obísť potrebu samostatnej vyrovnávacej pamäti read_page. Zmena znížila veľkosť pamäte potrebnej počas práce so Squashfs.
    • V systémovom volaní statx() implementovaný práporek STATX_DIO_READ_ALIGN, na určenie požadovaného zarovnania pre operácie čítania z 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ú klasifikované ako voliteľné a budú implementované vo forme voliteľných doplnkov. Výrazne sa zvýšila rýchlosť overovania integrity FS. Okrem toho bola v Bcachefs vylepšená funkcia v režime len na čítanie; boli odstránené problémy, ktoré spôsobovali prístup do pamäte po jej oslobodení (use after free); boli vyriešené problémy s reflink-odkazmi vo fsck; bola opravená správa reštartovania transakcie.
    • Bola vrátená modul md-linear, určený na spájanie blokových zariadení. Tento modul bol predtým vyhlásený za zastaraný a odstránený z jadra 6.8, ale ukázalo sa, že je požadovaný, a preto bol teraz obnovený.
    • Súborové systémy F2FS a SQUASHFS boli prekonvertované na používanie folio stránok pamäte (page folios).
    • V ovládači null_blk bol implementovaný atribút „rotational“, nastavený cez configfs, ktorý umožňuje simulovať prácu so zariadením založeným na otáčajúcich sa diskoch, čo zjednodušuje 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 atomického zápisu.
  • Pamäť a systémové služby
    • Zavŕšená integrácia do jadra ovládača ntsync, realizujúceho symbolické zariadenie /dev/ntsync a súbor primitívov na synchronizáciu, ktoré sa používajú v jadre Windows NT. Implementácia takýchto primitívov na úrovni jadra môže výrazne zvýšiť výkon hier Windows spúšťaných pomocou Wine. Zvýšenie výkonu sa dosahuje vďaka odstráneniu režijných nákladov spojených s využívaním RPC v užívateľskom priestore. Vytvorenie samostatného ovládača pre jadro Linuxu sa vysvetľuje problematickosťou správnej implementácie API synchronizácie NT na existujúcich primitívoch v jadre.
    • Pridaný nový kontrolér cgroup DMEM na oddelené spracovanie oblastí pamäte zariadení, ako je GPU. DMEM umožňuje vytvárať samostatné cgroup pre rôzne úlohy, ktoré pracujú s GPU, aby sa mohli vykonávať bez vzájomného ovplyvnenia. Nová funkcia rieši problém núteného ukončenia operácií s GPU pri vyčerpaní dostupnej pamäte, vďaka evidencii odrazenej pamäte GPU a pamäte CPU používaných ovládačmi 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 urýchlenie premeny virtuálnych adries na fyzické. Pridané optimalizácie spočívajú v odloženom aktualizovaní niektorých štruktúr údajov počas prechodu kontextom, č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ú využívané a ktoré môžu byť odsunované na oddiel stránkovania.
    • Pokračoval prenášanie 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 aktívna predvolene a nezabraňuje zahrnutiu Rustu do povinných zostavovacích závislostí jadra). Poskytla sa možnosť používania v kóde jadra makra "derive(CoercePointee)", čo umožňuje používať inteligentné ukazovatele s trait-objektmi. V rámci jadra samostatné metriky na hodnotenie výsledkov testovania. Rust-obalov pre PCI, platformy, Open Firmware, symbolických zariadení a niektorých funkcií vstupu/výstupu. Greg Kroah-Hartman, zodpovedný za podporu stabilnej vetvy jadra Linux, charakterizoval súčasný stav ako „takmer pripravený na písanie reálneho ovládača v Rustu“.
    • V zostavovacích scenároch je navrhnutý nový kód na generovanie verzií ladených symbolov pre načítateľné moduly, ktorý teraz používa informácie z ladených záznamov v formáte DWARF, a nie rozoberá zdrojový kód priamo. Zmena umožňuje aplikovať verzionovanie ladených symbolov pre moduly napísané v jazyku Rust. Staršia implementácia je tiež ponechaná v jadre, zatiaľ čo výber generátora sa vykonáva na úrovni zostavovacích možností.
    • Pre architektúru PowerPC bola implementovaná podpora režimu lahnivého prepadania úloh (PREEMPT_LAZY, lazy preemption), ktorý zodpovedá režimu úplného prepadania („full preemption“) pre realtime úlohy (RR/FIFO/DEADLINE), ale zdržuje prepadanie bežných úloh (SCHED_NORMAL) až do hranice ticku.
    • V podsyséme profilovania výkonu perf bola pridaná podpora počítadiel spotreby energie procesorov AMD. Pridaná možnosť práce na systémoch s až 2048 jadrami CPU.
    • Poskytla možnosť použitia parametra sysctl pid_max s priestormi mien identifikátorov procesov (ID namespace). Parameter pid_max slúži na obmedzenie maximálnej hodnoty identifikátorov procesov (PID) a môže sa teraz použiť na obmedzenie maximálneho počtu procesov spustených v uvedenom priestore mien. Spracovanie parametra prebieha hierarchicky, t.j. obmedzenia vo vonkajších priestoroch mien platia aj pre vnútorné priestory mien.
    • Pri použití pre spustenie procesu systémového volania execveat v súborovom systéme /proc sa teraz bude zobrazovať názov spusteného súboru, nie číslo súborového popisu.
    • Do zloženia zdrojového kódu jadra (v adresári samples) bola pridaná utilita mountinfo, demonštrujúca použitie systémových volaní statmount() a listmount().
    • V subsystéme BPF sú ponúknuté nové funkcie bpf_local_irq_save() a bpf_local_irq_restore() na dočasné vypnutie prerušenia na lokálnom CPU. Funkcie sa môžu použiť na implementáciu štruktúr, ktorých spracovanie nie je prerušené prerušením.
    • V systémovom volaní madvise() pri použití vlajok MADV_DONTNEED a MADV_FREE zabezpečené uvoľnenie tabuliek strán pamäte, súvisiacich s uvoľneným rozsahom adries, pretože v niektorých situáciách môžu prázdne stránky pamäte zaberať pomerne veľa pamäte.
    • Pre architektúru OpenRISC bola implementovaná podpora mechanizmu reštartovateľných sekvencií (rseq, restartable sequences), určeného na rýchle atomárne vykonávanie operácií, ktoré sa v prípade prerušenia iným vláknom vymazávajú a opakujú sa pokusy o vykonanie.
    • 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 dodatočných metadát o integrite pri vykonávaní operácií čítania a zápisu.
  • Virtualizácia a bezpečnosť
    • V systémovom volaní execveat bol pridaný vlajka AT_EXECVE_CHECK, ktorá umožňuje vykonať kontrolu možnosti vykonávania súboru bez jeho skutočného spustenia, ale so zohľadnením bezpečnostných politík, prístupových práv a aktívnych modulov LSM. Pre použitie v kombinácii s AT_EXECVE_CHECK sú navrhnuté bezpečnostné flagy SECBIT_EXEC_RESTRICT_FILE a SECBIT_EXEC_DENY_INTERACTIVE, ktoré je možné použiť na obmedzenie vykonávania súborov so skriptmi v interpretovaných programovacích jazykoch. Flag SECBIT_EXEC_RESTRICT_FILE prikazuje linkerom a interpreterom používať voľbu AT_EXECVE_CHECK na kontrolu oprávnenosti vykonávania, zatiaľ čo flag SECBIT_EXEC_DENY_INTERACTIVE zakazuje spracovanie interaktívnych príkazov. Hlavná myšlienka zmeny spočíva v možnosti aplikovania bezpečnostných politík nielen na tradičné vykonateľné súbory, ale aj na textové súbory so skriptmi, ktoré môžu byť načítané cez spustenie interpretátora (t.j. zákaz vykonávania môže byť realizovaný nielen pri spustení „./script.sh“ ale aj pri vykonaní vo forme „sh script.sh“).
    • Na systémoch x86 je implementovaná podpora chránených časových čítačov pre hostiteľské systémy, ktoré neumožňujú meniť systémové hodiny hostiteľského systému z prostredia hostiteľa. Možnosť je realizovaná na základe mechanizmu AMD SEV (Bezpečná šifrovaná virtualizácia), ktorý sa uplatňuje v systémach virtualizácie na ochranu virtuálnych strojov pred zasahovaním hypervízora alebo správcu hostiteľského systému.
    • V systéme mandátneho prístupu SELinux bola pridaná podpora xperm-pravidiel, ktoré umožňujú viazať politiky SELinux na konkrétne volania ioctl() alebo správy netlink.
    • Na podpisovanie modulov jadra digitálnym podpisom sa namiesto SHA1 predvolene sa využíva používa algoritmus SHA512.
    • V ovládačoch pre hostiteľské systémy VirtualBox je zahrnutá podpora architektúry ARM64.
    • V hypervízore KVM pokračovaná práca za využívania mechanizmu Intel TDX (Trusted Domain Extensions) na šifrovanie pamäte hostiteľských systémov.
    • V virtio_blk bola pridaná podpora režimu obnovy chýb.
  • Sieťový subsystém
    • Vo realizácii protokolu RxRPC sa objavila možnosť využívania veľkých rámcov 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, pôsobiaci v viazaní k menne (network namespace) a umožňujúci určiť oneskorenie, ktoré bude zadané predtým, ako systém môže znova použiť číslo sieťového portu po uzavretí TCP zásuvky.
    • Pridaná možnosť výberu poskytovateľa presného času (PTP) pre tvorbu časových pečiatok na úrovniach PHY a MAC.
    • Pre IPsec bola implementovaná podpora mechanizmu agregácie a fragmentácie kapsulovaný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 prenos informácie o priorite (SO_PRIORITY) vo forme riadiacich správ (cmsg — control messages). Pre sieťové sokety bola pridaná možnosť SO_RCVPRIORITY, ktorá v rámci funkcií recvmsg() prenáša informácie o priorite soketu.
  • Zariadenie
    • Pridané pohonom amdxdna pre integrované v CPU AMD akcelerátory NPU (Neural Processing Unit) na báze architektúry XDNA, určené na zrýchlenie operácií súvisiacich s strojovým učením. NPU na báze 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.
    • V ovládači i915 stavebné bloky pre vetvu dogfood, a do platformy Fuchsia identifikátory nových GPU, implementovaný spracovateľ chýb inicializácie HDMI, zlepšená spoľahlivosť reštartu GPU na systémoch Haswell a starších.
    • Pokračuje práca na drm-ovládači (Direct Rendering Manager) Xe pre GPU na báze architektúry Intel Xe, ktorý sa používa vo video kartách Intel rodiny Arc a integrovaných grafikách, počnúc procesormi 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, zobrazujúceho obdobu "modrej obrazovky smrti" pri chybách. Pokračovala sa príprava na podporu budúcej série grafických kariet Radeon RX 9000 na báze architektúry RDNA4. 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 zapnutý ovládač pre kontroléry Intel THC (Touch Host Controller), používaný na interakciu so dotykovými obrazovkami a touchpadmi na niektorých notebookoch. Pridaná podpora zariadení Wacom s rozhraním PCI. Pridaná podpora herných ovládačov QH Electronics.
    • Pridaná podpora ARM platformy, SoC a zariadenia: 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 na báze architektúry RISC-V.
    • V zvukovom subsystéme ALSA pre MIDI 2.0 boli rozšírené API rawmidi a sequencer. V API pre presúvanie operácií kompresie na stranu zvukovej karty 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: linux.org.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