Uvolnění jádra Linux 6.14

Po dvou měsících vývoje představil Linus Torvalds uvolnění jádra Linux 6.14. Mezi nejvýznamnější změny patří: ovladač ntsync se synchronizačními primitivy Windows NT, nastavení vyvážení čtecích operací v Btrfs RAID1, podpora reflink v XFS v režimu realtime, možnost nekovadleného vyrovnávacího vstupu/výstupu, cgroup dmem pro omezení paměti GPU, využití io_uring v FUSE, delegace atributů v NFS, podpora atomového zápisu v Device mapper, zrychlení symbolických odkazů, správa možnosti vykonávání skriptů, podpora čipů Qualcomm Snapdragon 8 Elite, ovladač pro NPU AMD.

Do nové verze bylo přijato 12115 oprav od 1984 vývojářů, velikost patche je 39 MB (změny se dotkly 10170 souborů, bylo přidáno 531586 řádků kódu, odstraněno 235999 řádků). V minulém vydání bylo 14172 oprav od 2086 vývojářů, velikost patche byla 46 MB. Přibližně 41 % všech změn uvedených v 6.14 se týká ovladačů zařízení, asi 13 % změn souvisí s aktualizací kódu specifického pro hardwarové architektury, 14 % se vztahuje na síťový zásobník, 7 % na souborové systémy a 4 % na vnitřní subsystémy jádra.

Hlavní novinky v jádře 6.14:

  • Diskový subsystém, vstup/výstup a souborové systémy
    • V souborovém systému Btrfs byla přidána podpora nových metod vyvažování čtecích operací mezi disky souvisejícími s polem RAID1. Kromě stávajícího rozložení zatížení na základě identifikátorů procesů (pid) byla v nové verzi navržena tři nová režimy vyvažování: „rotation“ (rovnoměrné rozložení zatížení mezi všemi disky, režim je výchozí); „latency“ (rozložení s ohledem na zpoždění, může být užitečné při selháních nebo nestabilním chování disků); devid (manuální správa). Pro změnu režimu vyvažování byl přidán rozhraní „/sys/fs/btrfs//read_policy“. Mezi dalšími změnami v Btrfs je implementace ioctl FS_IOC_READ_VERITY_METADATA.
    • Byl přidán režim nekamenného vyrovnávacího vstupu/výstupu, při kterém jsou data okamžitě vymazána z stránkového cache po dokončení operací čtení nebo zápisu. Tato změna může být užitečná při použití velmi rychlých ukládacích zařízení, jejichž operace cachování v paměti jsou nadměrné. Pro taková zařízení nový režim umožňuje eliminovat zbytečné využívání paměti stránkovým cache bez nutnosti použití složitého API přímého vstupu/výstupu (Direct I/O).
    • Do fsnotify, mechanismu sledování změn v systému souborů, byla přidána nová událost FS_PRE_ACCESS, generovaná před přístupem k obsahu souboru. Událost je zpracovávána synchronně, tj. jádro odešle událost a čeká na obdržení odpovědi. Pokud je odpověď přijata, operace je provedena, a pokud došlo k chybě, systémový volání vrátí do uživatelského prostoru chybový kód. Pomocí FS_PRE_ACCESS může proces v uživatelském prostoru například organizovat vyplnění souboru podle připravenosti dat v pomalém úložišti.
    • Do subsystému FUSE, který umožňuje vytvářet implementace souborových systémů v uživatelském prostoru, byla přidána podpora výměny dat mezi jádrem a zpracovatelem v uživatelském prostoru za použití mechanismu I/O io_uring. Změna umožňuje zvýšit výkon FUSE snížením přepínání kontextu mezi jádrem a uživatelským prostorem.
    • Do souborového systému XFS byla přidána možnost použití zpětného mapování (rmap, reverse-mapping) v režimu s předvídatelnými zpožděními ("realtime device"). Zpětné mapování umožňuje určit, který soubor se používá pro uložený blok na úložném zařízení. Pomocí rmap je v XFS pro realtime režim implementována podpora operace reflink, která umožňuje vytváření kopií souborů klonováním metadat souboru a vytvořením odkazu na již existující data bez jejich skutečného kopírování.
    • Ve VFS bylo implementováno cachování velikosti symbolických odkazů, což umožnilo urychlit provádění operace readlink o 1,5 % (v testu s /initrd.img v ext4). Cachování je zapnuto v FS ext4 a tmpfs.
    • Do implementace NFSv4.2 byla přidána podpora delegace atributů souborů, která umožňuje spravovat takové atributy souborů, jako je čas změny (mtime), na straně NFS klienta, aniž by bylo nutné resetovat změny na serveru. V NFS byla také vylepšena podpora protokolu „LOCALIO“, který určuje, zda se klient a server NFS nacházejí na stejném hostiteli, aby se aktivovaly odpovídající optimalizace, jako je použití přímého vstupu / výstupu (Direct I/O) klientem.
    • Byl zvýšen výkon operací čtení ve souborových systémech NETFS, CIFS a AFS (Andrew File System).
    • V systému Squashfs byl zařazen režim přímého načítání bloků do stránkového cache (SQUASHFS_FILE_DIRECT), což umožňuje obejít samostatnou cache read_page. Tato změna vedla k redukci velikosti paměti spotřebovávané při práci se Squashfs.
    • V systémovém volání statx() byl implementován příznak STATX_DIO_READ_ALIGN pro určení požadovaného vyrovnání pro operace čtení ze souboru.
    • Ve souborovém systému Bcachefs byl aktualizován a stabilizován formát diskových struktur. Jakékoli další změny formátu budou považovány za nepovinné a budou implementovány ve formě volitelných rozšíření. Výrazně byla zvýšena rychlost kontroly integrity FS. Kromě toho byla v Bcachefs vylepšena činnost v režimu pouze pro čtení; byly odstraněny problémy vedoucí k přístupu k paměti po jejím uvolnění (use after free); byly vyřešeny problémy s reflink ukazateli ve fsck; byla opravena manipulace s restartem transakce.
    • Byl vrácen modul md-linear určený pro spojování blokových zařízení. Tento modul byl dříve označen jako zastaralý a byl odstraněn z jádra 6.8, ale ukázalo se, že je vyžadován, a proto byl nyní obnoven.
    • Souborové systémy F2FS a SQUASHFS byly převedeny na použití svazků stránkované paměti (page folios).
    • Souborové systémy OCFS2 a DLMFS byly převedeny na použití nového API pro připojení oddílů.
    • V ovladači null_blk byl implementován atribut „rotational“, nastavovaný přes configfs a umožňující simulovat práci s zařízením na bázi rotujících disků pro usnadnění testování funkcí jádra.
    • V systému Device mapper a v modulech dm-mirror, dm-io, dm-table, dm-linear, dm-stripe a dm-raid1 byla implementována podpora atomárního zápisu.
  • Paměť a systémové služby
    • Byla dokončena integrace do jádra ovladače ntsync, který implementuje symbolické zařízení /dev/ntsync a sadu primitiv pro synchronizaci používaných v jádře Windows NT. Implementace těchto primitiv na úrovni jádra může výrazně zvýšit výkon Windows her spouštěných pomocí Wine. Zlepšení výkonu je dosaženo díky odstranění režie spojené s použitím RPC v uživatelském prostoru. Vytvoření samostatného ovladače pro jádro Linux je vysvětleno problematičností správné implementace API synchronizace NT nad stávajícími primitivy v jádře.
    • Byl přidán nový ovladač cgroup DMEM pro oddělené sledování oblastí paměti zařízení, jako jsou GPU. DMEM umožňuje vytvářet samostatné cgroup pro různé úkoly pracující s GPU, aby mohly být prováděny bez vzájemného ovlivnění. Nová funkce řeší problém s nuceným ukončením operací s GPU při vyčerpání dostupné paměti díky sledování odražené paměti GPU a paměti CPU používané ovladači v samostatných cgroup.
    • Byly provedeny optimalizace pro škálování operace vyprázdnění (flush) cache TLB (Translation Lookaside Buffer), která se používá pro urychlení převodu virtuálních adres na fyzické. Přidané optimalizace spočívají v odloženém aktualizování některých datových struktur během přepínání kontextu, což umožňuje zvýšit výkon při některých testech.
    • Byl zvýšen výkon mechanismu MGLRU (Multi-Generational LRU), který je použit pro určení, které stránky paměti jsou používány, a které lze vyřadit do stránkovacího prostoru.
    • Pokračuje přenos změn z větve Rust-for-Linux, souvisejících s používáním jazyka Rust jako druhého jazyka pro vývoj ovladačů a modulů jádra (podpora Rustu není ve výchozím nastavení aktivní a nevede k tomu, že by Rust byl zahrnut mezi povinné závislosti pro kompilaci jádra). Byla poskytnuta možnost použití v kódu jádra makra „derive(CoercePointee)“, které umožňuje používat inteligentní ukazatele s trait-objekty. Do jádra byly zahrnuty Rust-vrstva pro PCI, platformy, Open Firmware, symbolická zařízení a některé funkce vstupu/výstupu. Greg Kroah-Hartman, zodpovědný za podporu stabilní větve jádra Linux, charakterizoval aktuální stav jako „téměř připravenost na napsání skutečného ovladače v Rustu“.
    • Ve stavebních scénářích byl navržen nový kód pro generování verzí ladicích symbolů pro načítané moduly, který nyní používá informace z ladicích záznamů ve formátu DWARF, místo aby přímo analyzoval zdrojový kód. Změna umožňuje aplikaci verzionování ladicích symbolů pro moduly napsané v jazyce Rust. Stará implementace zůstává také v jádře, přičemž volba generátoru se provádí na úrovni stavebních možností.
    • Pro architekturu PowerPC byla implementována podpora režimu líného preemptivního vystřídání úloh (PREEMPT_LAZY, lazy preemption), který odpovídá režimu plného preemptivního vystřídání („full preemption“) pro realtime-úlohy (RR/FIFO/DEADLINE), ale zpožďuje vystřídání běžných úloh (SCHED_NORMAL) až do hranice ticku.
    • Do subsystému profilování výkonu „perf“ byla přidána podpora počítadel energetické spotřeby procesorů AMD. Byla přidána možnost provozu na systémech s až 2048 jádry CPU.
    • Byla poskytnuta možnost použití sysctl-parametru pid_max s prostorami názvů identifikátorů procesů (ID namespace). Parametr pid_max slouží k omezení maximální hodnoty identifikátorů procesů (PID) a nyní může být používán k omezení maximálního možného počtu procesů spuštěných v daném prostoru názvů. Zpracování parametru se provádí hierarchicky, tedy omezení ve vnějších prostorách názvů se vztahují na vnořené prostory názvů.
    • Při spuštění procesu systémového volání execveat bude nyní ve файловém systému /proc zobrazováno jméno spuštěného souboru, nikoli číslo file descriptoru.
    • Do zdrojového kódu jádra (v adresáři samples/vfs) byla přidána utilita mountinfo, která demonstruje použití systémových volání statmount() a listmount().
    • V subsystému BPF byly navrženy nové funkce bpf_local_irq_save() a bpf_local_irq_restore() pro dočasné zakázání přerušení na lokálním CPU. Tyto funkce lze použít k implementaci struktur, jejichž zpracování není přerušováno.
    • Ve systémovém volání madvise() při použití příznaků MADV_DONTNEED a MADV_FREE byla zajištěna úleva tabulek stránek paměti spojených s uvolněným rozsahem adres, protože v některých situacích mohou prázdné stránky paměti zabírat značné množství paměti.
    • Pro architekturu OpenRISC byla implementována podpora mechanismu restartovatelných sekvencí (rseq, restartable sequences), určeného pro rychlé atomární provádění operací, které v případě přerušení jiným vláknem se vyčistí a provádí se znovu.
    • Byla provedena reorganizace kódu s implementací algoritmů CRC32 a CRC-T10DIF, které se již nepřekrývá s podsystemem crypto a je voláno přímo z knihovního rozhraní. Změna umožnila zjednodušit kód a zvýšit jeho efektivitu.
    • Do systému asynchronního vstupu/výstupu io_uring bylo přidáno rozhraní pro předávání dalších metadat o integritě při provádění operací čtení a zápisu.
  • Virtualizace a bezpečnost
    • Do systémového volání execveat byl přidán příznak AT_EXECVE_CHECK, který umožňuje provést kontrolu oprávněnosti spuštění souboru bez jeho skutečného spuštění, ale s ohledem na bezpečnostní politiky, práva přístupu a aktivní moduly LSM. Pro použití v kombinaci s AT_EXECVE_CHECK byly navrženy securebit-příznaky SECBIT_EXEC_RESTRICT_FILE a SECBIT_EXEC_DENY_INTERACTIVE, které lze použít k omezení vykonávání souborů se skripty v interpretovaných programovacích jazycích. Příznak SECBIT_EXEC_RESTRICT_FILE předpisuje linkerům a interpretům použít možnost AT_EXECVE_CHECK pro ověření oprávněnosti spuštění, zatímco příznak SECBIT_EXEC_DENY_INTERACTIVE zakazuje zpracovávat interaktivní příkazy. Hlavní myšlenkou změny je možnost aplikovat bezpečnostní politiky nejen na tradiční spustitelné soubory, ale také na textové soubory se skripty, které lze načíst spuštěním interpretu (tj. zákaz vykonávání může být realizován nejen při spuštění './script.sh', ale i při provádění ve formě 'sh script.sh').
    • Na systémech x86 byla implementována podpora chráněných časových čítačů pro hostitelské systémy, které neumožňují měnit systémový čas hostitelského systému z hostitelského prostředí. Tato schopnost byla realizována na základě mechanismu AMD SEV (Secure Encrypted Virtualization), který se používá v virtualizačních systémech pro ochranu. virtuálních strojů před zásahy hypervizora nebo administrátora hostitelského systému.
    • Do systému mandatorního řízení přístupu SELinux byla přidána podpora xperm-pravidel, která umožňují vázat politiky SELinux na konkrétní volání ioctl() nebo zprávy netlink.
    • Pro podepisování modulů jádra digitálním podpisem je místo SHA1 ve výchozím nastavení použit algoritmus SHA512.
    • V ovladačích pro hostitelské systémy VirtualBox byla přidána podpora architektury ARM64.
    • V hypervizoru KVM pokračuje práce na zavádění mechanismu Intel TDX (Trusted Domain Extensions) pro šifrování paměti hostitelských systémů.
    • V virtio_blk byla přidána podpora režimu obnovení chyb.
  • Síťová subsystém
    • V implementaci protokolu RxRPC byla umožněna podpora velkých rámců UDP pro zvýšení propustnosti.
    • Pro TCP byla přidána podpora algoritmu RACK-TLP pro detekci ztráty paketů.
    • Byl přidán nový parametr sysctl tcp_tw_reuse_delay, který funguje v rámci prostorového jména (network namespace) a umožňuje určit zpoždění před tím, než systém může znovu použít číslo síťového portu po uzavření TCP-socketu.
    • Byla přidána možnost výběru poskytovatele přesného času (PTP) pro generování časových značek na úrovních PHY a MAC.
    • Pro IPsec byla implementována podpora mechanismu agregace a fragmentace enkapsulovaných IP paketů — IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
    • Do systému síťových socketů byla přidána podpora přenosu informací o prioritách (SO_PRIORITY) ve formě ovládacích zpráv (cmsg — control messages). Pro síťové sockety byla přidána možnost SO_RCVPRIORITY, která při funkcích recvmsg() zahrnuje předání informací o prioritě socketu.
  • Hardware
    • Byl přidán ovladač amdxdna pro integrované akcelerátory NPU (Neural Processing Unit) v CPU AMD založené na architektuře XDNA, určený k urychlení operací souvisejících s strojovým učením. NPU na bázi architektury XDNA je dodáván v sériích procesorů AMD Ryzen 7040 a 8040, akcelerátorech AMD Alveo V70 a SoC AMD Versal.
    • Do ovladače i915 byly přidány identifikátory nových GPU, implementoval se zpracovatel poruch při inicializaci HDMI a zvýšila se spolehlivost resetování GPU jáder na systémech Haswell a starších.
    • Pokračuje práce na drm ovladači (Direct Rendering Manager) Xe pro GPU na bázi architektury Intel Xe, která se používá ve grafikách Intel rodiny Arc a integrované grafice od procesorů Tiger Lake.
    • V ovladači Nouveau byla přidána možnost přenosu bufferů s logy GSP-RM přes debugfs.
    • Ovladač AMDGPU nyní podporuje mechanizmus DRM panic, zobrazující něco jako 'modrou obrazovku smrti' při selháních. Pokračuje příprava na podporu budoucí série grafických karet Radeon RX 9000 na bázi architektury RDNA4. Byla aktualizována 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.
    • Do DRM ovladače msm (GPU Qualcomm Adreno) byla přidána podpora platformy Qualcomm SM6150 (QCS615).
    • V DRM-ovladači panfrost byla přidána podpora SoC MediaTek MT8188 s GPU Mali-G57.
    • V DRM-ovladači vc4 byla přidána podpora SoC Broadcom BCM2712 (Raspberry Pi 5).
    • Do vfio ovladače nvgrace-gpu byla přidána podpora čipů NVIDIA Grace Blackwell 200.
    • Do souboru byl přidán ovladač pro kontroléry Intel THC (Touch Host Controller), používaný pro interakci se dotykovými obrazovkami a touchpady na některých noteboocích. Byla přidána podpora zařízení Wacom s PCI rozhraním. Přidána podpora herních ovladačů QH Electronics.
    • Byla přidána podpora platformy ARM, SoC a zařízení: 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. Dále byla přidána podpora SoC SpacemiT K1 na bázi architektury RISC-V.
    • V zvukovém subsystému ALSA pro MIDI 2.0 byly rozšířeny API rawmidi a sequencer. Do API pro vyjmutí operací komprese na zvukovou kartu byla přidána podpora ASRC (Asynchronous Sample Rate Conversion).
    • Byla přidána podpora zvukových systémů zařízení Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 a 18i20. Přidána byla podpora bezdrátových sluchátek SteelSeries Arctis 9.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster